[解決済み] OpenAPI(Swagger)で文字列やNULLを含むプロパティを定義する方法は?
質問
JSONスキーマファイルがあり、プロパティの1つが次のように定義されています。
string
または
null
:
"type":["string", "null"]
YAMLに変換すると(OpenAPI/Swaggerで使用するため)、こうなります。
type:
- 'null'
- string
と表示されますが、Swagger Editorではエラーが表示されます。
スキーマの "type"キーは文字列でなければなりません。
OpenAPIでNULL可能なプロパティを定義する正しい方法は何ですか?
どのように解決するのですか?
OpenAPIのバージョンに依存します。
OpenAPI 3.1
あなたの例は、JSON Schema 2020-12と完全に互換性のあるOpenAPI 3.1において有効です。
type:
- 'null' # Note the quotes around 'null'
- string
# same as
type: ['null', string]
上記は同等です。
oneOf:
- type: 'null' # Note the quotes around 'null'
- type: string
は
nullable
キーワードは OAS 3.0.x では存在せず、OAS 3.1 では削除され、代わりに
'null'
型の代わりに削除されました。
OpenAPI 3.0.x
Nullableな文字列は以下のように定義されています。
type: string
nullable: true
OpenAPIの3.0.xまでのバージョンでは、JSON Schemaの構文とは異なり、独自の
フレーバーのJSON Schemaを使用するからです。
("拡張サブセット")を使用するからです。違いのひとつは
type
は単一の型でなければならず、型のリストにはできないことです。また
'null'
型もありません。その代わりに
nullable
キーワードは
type
を許可するモディファイアです。
null
の値を指定します。
OpenAPI 2.0
OAS2 は
'null'
をデータ型としてサポートしていないので、運が悪いとしか言いようがありません。使用できるのは
type: string
. しかし、いくつかのツールは
x-nullable: true
をベンダーの拡張機能としてサポートしているツールもあります。
nullを適切にサポートするためにOpenAPI v.3への移行を検討してください。
関連
-
[解決済み] java.lang.RuntimeException: missing swagger input or config を修正するにはどうすればよいですか?
-
[解決済み] ネット5のウェブAPIでSwashbuckleをアップグレードしてSwaggerResponseを使用するには?
-
[解決済み] Swagger APIをPostmanにインポートする方法は?
-
[解決済み] Swagger Spec (swagger.json) で「Authorization: Bearer <token>」を表現する方法
-
[解決済み] 既存のpostmanコレクションを元にswaggerを生成するには?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.lang.RuntimeException: missing swagger input or config を修正するにはどうすればよいですか?
-
[解決済み] ネット5のウェブAPIでSwashbuckleをアップグレードしてSwaggerResponseを使用するには?
-
[解決済み] Swagger APIをPostmanにインポートする方法は?
-
[解決済み] Swagger Spec (swagger.json) で「Authorization: Bearer <token>」を表現する方法
-
[解決済み] 既存のpostmanコレクションを元にswaggerを生成するには?[クローズド]