API の Swagger 定義を定義していて、このユース ケースに遭遇しました。
要求と応答のオブジェクト モデルの定義はまったく同じに見えます。ただし、オブジェクトには get 操作中により多くの列挙値を返すフィールドが 1 つありますが、put 操作では最小の列挙値に制限されます。同じフィールドの異なる列挙値を条件付きで参照して、定義の重複を回避することは可能ですか? この制限を克服するために、リクエストとレスポンスのモデル定義全体を再作成したくありません。
これが私の例です。
definitions:
EntryRequest:
properties:
entries:
$ref: '#/definitions/EntityResponse/properties/entries'
EntryResponse:
properties:
entries:
type: array
items:
$ref: '#/definitions/Entry'
Entry:
properties:
entryStatus:
type: string
enum:
- ENABLE
- DISABLE
- IN_PROGRESS
以上、気になる点が2点ありました。1) EntryRequest の場合、API は PUT 操作で ENABLE/DISABLE のみを受け入れますが、API は GET 操作でそれらすべてを返します。条件付きで entryStatus プロパティへの参照を作成したいと思います。出来ますか?2) また、entryStatus を除くすべては、EntryRequest と EntryResponse オブジェクト モデルの両方で同じです。entryStatus フィールドの違いを表すために、これも複製したくありません。
それを行う方法はありますか?
編集: これについてさらに学ぶと、これはyaml関連のクエリであると感じます。しかし、誰かが同様の状況に直面し、どのように対処したかを確認するために、ここに掲載したいと思います. または、これを処理する方法に関する推奨事項があるかどうかを確認します。同じフィールドに異なる列挙型をタグ付けするには、次のようにできると思います。
RequestEntryStatus:
type: string
enum: &requestStatus
- ENABLE
- DISABLE
ResponseEntryStatus:
type: string
enum: &responseStatus
- ENABLE
- DISABLE
- IN_PROGRESS
Entry:
properties:
entryStatus: *requestStatus
しかし、それでも、entryStatus フィールドへのマッピングが異なるリクエスト オブジェクトとレスポンス オブジェクトの複製を作成する必要があります。これを処理するためのより良い方法があれば知りたいです。