GETメソッドで動作するREST Webサービスには関数があり、2つのオプションパラメーターがあります。
Swaggerで定義しようとしましたが、required
をfalse
として設定した後、エラーが発生しました有効なパラメーター定義ではありません。
required
の値をtrue
に設定すると、エラーがなくなることがわかりました。 Swaggerコードのサンプルを次に示します。
...
paths:
'/get/{param1}/{param2}':
get:
...
parameters:
- name: param1
in: path
description: 'description regarding param1'
required: false
type: string
- name: param2
in: path
description: 'description regarding param2'
required: false
type: string
本体のパラメーターやクエリのパラメーターではこれを経験しませんでした。この問題は、パス内のパラメーターにのみ関連していると思います。 swagger仕様ファイルにも解決策が見つかりませんでした。
Swaggerでオプションのパラメーターを定義する他の方法はありますか、またはコードに誤りがありますか?
任意の助けをいただければ幸いです。
OpenAPI/Swagger仕様に従ってパスパラメーターが必要な場合、次のパスを持つ2つの個別のエンドポイントを追加することを検討できます。
/get/{param1}/{param2}
param2が提供されている場合/get/{param1}/
param2が提供されていない場合基本的なuriパラメータをオプションで持つことはできず、クエリ文字列値(urlの場合)のみを持つため、爆発する可能性があります。
例えば:
これは動作するはずです:
{
"in":"query",
"required":false
}
これは機能しません
{
"in":"path",
"required":false
}
「in」プロパティを「path」ではなく「query」に変更すると、機能するはずです。
YAMLが失敗する理由は、仕様に記載されているとおりです。
このパラメーターが必須かどうかを決定します。パラメータが「パス」にある場合、このプロパティは必須であり、その値はtrueでなければなりません。
ソース: http://swagger.io/specification/#parameterObject (固定フィールドテーブルを見てください)