Przypuśćmy, że mam dokument Openapi 3 opisujący API {X0}} w następujący sposób:

openapi: 3.0.0
info:
  version: '1'
  title: Foo
paths:
 /foo:
  get:
    responses:
      200:
        description: A Foo
  post:
    responses:
      201:
        description: Foo created

W innym dokumencie Openapi dla API {X0}} chciałbym odnieść się do aplikacji GET /foo z API {X2}}. Dokumenty OpenAPI Porozmawiaj trochę o odniesieniu do całej ścieżki. Jeśli jednak wykonuję:

openapi: 3.0.0
info:
  version: '1'
  title: Bar
paths:
 /foo:
  $ref: 'foo.yaml#/paths/~1foo'

Naturalnie dostaję zarówno GET, jak i POST w API {X2}}, ponieważ tylko ścieżka jest przywoływana, a nie metody.

Próbowałem tego:

openapi: 3.0.0
info:
  version: '1'
  title: Bar
paths:
 /foo:
   get:
     $ref: 'foo.yaml#/paths/~1foo/get'

Ale to daje błędy, takie jak should NOT have additional properties additionalProperty: $ref i should have required property 'responses' missingProperty: responses w różnych narzędziach, więc nie wydaje się być obsługiwane.

Czy istnieje sposób na to, aby to osiągnąć? Powinienem zauważyć, że prawdziwa prośba jest znacznie bardziej skomplikowana, stąd pragnienie duplikatu. Jeśli to możliwe, chciałbym uniknąć wypełnienia wielu obiektów dziecka get z indywidualną $ref s.

1
David van Geest 22 październik 2020, 05:47

1 odpowiedź

Najlepsza odpowiedź

Openapi nie ma drogi do $ref Indywidualna operacja (get / post / etc.) Możesz tylko $ref cała ścieżka.

Możesz zaproponować ulepszenia składni w repozytorium specyfikacji OpenAPI:
https://github.com/oai/openapification/issues

0
Helen 22 październik 2020, 08:39