PaymentMethod
を以下のように定義したい。 swagger.yamlでoneOfはサポートされていますか?
PaymentMethod:
oneOf:
- $ref: '#/definitions/NewPaymentMethod'
- $ref: '#/definitions/ExistPaymentMethod'
ExistPaymentMethod
にはIDのみが含まれ、cardNumber
にはNewPaymentMethod
にはid
は含まれませんが、その他すべての詳細が含まれます。 cardNumber
、cardholderName
、cardholderAddress
など.
oneOf
はOpenAPIバージョン3(openapi: 3.0.0
)、ただしSwaggerバージョン2(swagger: '2.0'
)。
PaymentMethod:
oneOf:
- $ref: '#/components/schemas/NewPaymentMethod'
- $ref: '#/components/schemas/ExistPaymentMethod'
GitHubの問題のリファレンス: https://github.com/OAI/OpenAPI-Specification/issues/3
2.0と比較したOpenAPI 3.0の変更点のリストについては、次を参照してください。 https://blog.readme.io/an-example-filled-guide-to-swagger-3-2/
Swaggerが使用するものは、JSONスキーマにのみ影響を受けています。彼らはJSONスキーマからそれほど逸脱していませんが、いくつかを省略し、いくつかを追加し、いくつかの動作を変更しています。 Swaggerが除外していることの1つはoneOf
です。
OneOf、anyOf、およびその他の同様のディレクティブは、swagger 2.0ではサポートされていませんが、Open API 3.0仕様ではサポートされています。
Swagger 2.0ファイルをOpen API 3.0ファイルに変換する必要があります。
ここにリンクがあります- https://blog.runscope.com/posts/tutorial-upgrading-swagger-2-api-definition-to-openapi-
ここにもう1つの便利なリンクがあります- https://github.com/swagger-api/swagger-ui/issues/38