chciałem to samo, i wpadłem na obejście, które wydaje się działać:
Ive właśnie zdefiniowano dwie różne ścieżki:
/path:
(...)
responses:
200:
description: Sucesso
schema:
$ref: '#/definitions/ResponseOne'
(...)
/path?parameter=value:
(...)
responses:
200:
description: Sucesso
schema:
$ref: '#/definitions/ResponseTwo'
(...)
Ścieżki działają na edytorze przekrętów. Mogę nawet udokumentować każdą opcję w inny sposób i umieścić opcjonalne parametry, które tylko mogą znajdować się w drugim przypadku, co sprawia, że dokumentacja API jest znacznie czystsza. Używając operationId możesz generować czystsze nazwy dla wygenerowanych metod API.
Opublikowałem tutaj to samo rozwiązanie (https://github.com/OAI/OpenAPI-Specification/issues/270), aby sprawdzić, czy brakuje mi czegoś więcej.
Rozumiem, że nie jest to wprost dozwolone/zalecane (ani nie znalazłem jakiegoś miejsca, które wyraźnie zabroniłoby tego). Ale jako obejście i bycie jedynym sposobem dokumentowania interfejsu API z tym zachowaniem w bieżącej specyfikacji, wygląda jak opcja.
dwa problemy Ive znaleziono się z nim:
- kod Java gen URL ucieka Znak „=”, w związku z czym nie będzie działać, chyba to naprawić w wygenerowanego kodu. Prawdopodobnie dzieje się tak w innych generatorach kodu .
- Jeśli masz więcej zapytań, to dodasz dodatkowe "?" i zawieść;
Jeśli nie są to blokery, to przynajmniej pozwoli ci to odpowiednio udokumentować takie przypadki i pozwolić na testowanie za pomocą edytora wychwytu.
To nie jest poprawny parametr specyfikacji - zapytania nie są dozwolone w ścieżkach, muszą być zdefiniowane w "parametrach". Istnieją istniejące propozycje, które umożliwią wysyłanie łańcuchów zapytań do ścieżek: [Propozycja: zapytanie o tekst w specyfikacji ścieżki] (https://github.com/OAI/OpenAPI-Specification/issues/164), [dostosuj starsze interfejsy API, włączając parametry zapytania w ścieżce ] (https: // github.com/OAI/OpenAPI-Specification/issues/123) – Helen