プロパティをnullまたは参照として指定する方法は? jsonschemaを使用してプロパティをnullまたは参照として指定する方法について説明します。
闊歩で同じことをしたいと思っています。
上記の答えをjsonschemaで要約すると、次のようになります。
{
"definitions": {
"Foo": {
# some complex object
}
},
"type": "object",
"properties": {
"foo": {
"oneOf": [
{"$ref": "#/definitions/Foo"},
{"type": "null"}
]
}
}
}
答えの要点は、oneOf
の使用でした。
私の質問の要点:
DRY)を保持したい複雑なオブジェクトがあるので、それを定義セクションに入れて、スワガー仕様全体で再利用します。他のプロパティの値、応答オブジェクトなどです。
私の仕様のさまざまな場所で、プロパティはそのようなオブジェクトへの参照である可能性がありますOR nullです。
oneOf
またはanyOf
をサポートしないSwaggerでこれを指定するにはどうすればよいですか?
注:一部のSwagger実装では、x-nullable
(またはそのようなもの)を使用してプロパティ値をnullにすることができますが、$ref
replacesオブジェクトが参照しているため、x-nullable
の使用は無視されているように見えます。
それをするのは簡単ではありません。ほとんど不可能ですら。あなたのオプション:
これについては非常に長い議論があります ポイント 、多分いつかそれが行われるでしょう...
ベンダー拡張x-oneOfおよびx-anyOfのように使用できます。私はすでにこの難しい方法をとっています:これらのベンダーの拡張機能を考慮に入れるには、すべてのused 'swaggertools'をアップグレードする必要があります。
私の場合、必要なのは「のみ」です。
一年前、多分今...
多くのプロジェクトはanyOfとoneOfを必要としません、なぜ私たちではないのですか?
OpenAPI 3.0では、次を使用できます。
"foo": {
"nullable": true,
"allOf": [
{
"$ref": "#/definitions/Foo"
}
]
}
YAMLバージョン:
foo:
nullable: true
allOf:
- $ref: '#/definitions/Foo'
$ref
を他のキーワードと組み合わせるには$ref
をallOf
にラップする必要があります-$ref
は兄弟キーワードを上書きするためです。これについては、OpenAPI仕様リポジトリで詳しく説明されています。 参照オブジェクトは「nullable」とうまく結合しません