Swagger-core: インライン応答に注釈を付ける方法は?

作成日 2019年11月25日  ·  4コメント  ·  ソース: swagger-api/swagger-core

springdoc-openapiを使用すると、私のアプリケーションは、コントローラーとモデルのSwagger3アノテーションに基づいてOAS3yaml仕様を生成します。

私が達成したいのは、インライン操作応答を持つことです。 このようなもの:

paths:
  /myoperation:
    get:
      ...
      responses:
        '200':
          content:
            application/json:
              schema:
                required:
                  - count
                  - results
                type: object
                properties:
                  count:
                    type: integer
                  results:
                    type: array
            ...

コントローラクラスの操作メソッドのアノテーションは次のようになります。

@ApiResponse(responseCode = "200",
             description = "OK",
             content = @Content(mediaType = "application/json", schema = @Schema(implementation = MyResponseDTO.class, requiredProperties = { "count", "results"} ))

およびMyResponseDTO:

public class MyResponseDTO {

    @Schema(required = true, description = "")
    private long count;

    @ArraySchema(schema = @Schema(implementation = MyModel.class))
    private List<DTO> results;

    ... getters/setters

}

これにより、次のスキーマが作成されます。

...
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MyResponseDTO'

...
components:
    MyResponseDTO:
      required:
      - count
      type: object
      properties:
        count:
          type: integer
          format: int64
        results:
          type: array
          items:
            $ref: '#/components/schemas/MyModel'

応答コンテンツは、インラインオブジェクトではなく参照です。 ドキュメントにインラインで表示されるように応答/スキーマに注釈を付ける方法はありますか?

私はすでに、この質問を投稿問題springdoc-OpenAPIのため。 しかし、彼らは私にここで質問をするようにアドバイスしました。

だから多分ここの誰かが私を助けることができますか? ありがとう!

ラモンロックス

最も参考になるコメント

さて、あなたの提案をありがとう。 マニュアルの説明を試してみます。
将来的には、 @Schemaアノテーション用の追加のinline=true|false要素があればいいでしょう。

全てのコメント4件

私たちにはそれを行う方法があるとは思いません(しかし@frantumaは私を訂正するかもしれません)。

なぜインライン定義を探しているのですか? 一般的に、参照された定義は管理が簡単ですが、ユースケースを理解したいと思います。

サードパーティは、当社の製品が実装する必要のあるOAS3インターフェイスを指定しました。 インターフェイスのドキュメント(yaml)には、インライン操作の応答が含まれています。
要件の1つは、同じドキュメントを提供することです。 つまり、サードパーティが提供したものとまったく同じドキュメントを作成するために、Springコントローラー/モデルに注釈を付けようとしています。
したがって、インライン応答を使用することは私の個人的な選択ではなく、規定されています。

とった。 したがって、現時点では、これを行う簡単な方法はありません。 @Schemaアノテーション内のスキーマを手動で記述できますが、それが大きな/複雑なクラスである場合、それは苦痛になります。

より自動化するために、インラインにする必要があることを示す別の注釈を作成し、リーダーを拡張してそのように処理することができます。

さて、あなたの提案をありがとう。 マニュアルの説明を試してみます。
将来的には、 @Schemaアノテーション用の追加のinline=true|false要素があればいいでしょう。

このページは役に立ちましたか?
0 / 5 - 0 評価