SSM+Swagger設定パラメータが必要かどうかで発生した400または415エラー
1388 ワード
SSMプロジェクトを行う際に、パラメータを設定する必要があるか、必要でないかというニーズはよくあるはずですが、通常の2つの状況は次のようになります.必須パラメータは送信しないとエラーが発生し、送信は正常に取得されるべきである. は、必須でないパラメータに対してnullとしてデフォルトを送信しないべきであり(もちろんデフォルト値を変更することもできる)、送信は正常に取得される.
一般的にSSMメソッドパラメータを設定するには,直接パラメータ名対応,あるいは@RequestParam注釈,あるいは@Model注釈など複数の方式があり,ここでは詳しく説明しないが,いずれにしても大きな問題はない.
では、なぜ私がSwaggerの@ApiParam注釈を入れた後、問題が発生したのでしょうか.必須パラメータについては、 は必須でないパラメータに対して少し間違っています.私が ここで私の解決策を説明します.必須パラメータについては、 非必須パラメータの場合、
では、この小さな問題が発生した原因は何なのでしょうか.次のように考えます. Swaggerの 、Springの ここでSpringの設定がSwagger設定を上書きするはずです.
そうすると
あなたの问题に役に立つことを望んで、私を支持するなら少し助けてあげましょう!
一般的にSSMメソッドパラメータを設定するには,直接パラメータ名対応,あるいは@RequestParam注釈,あるいは@Model注釈など複数の方式があり,ここでは詳しく説明しないが,いずれにしても大きな問題はない.
では、なぜ私がSwaggerの@ApiParam注釈を入れた後、問題が発生したのでしょうか.
@ApiParam(required = true)
属性を設定すればよい.効果はパスしないとエラーになり、パスは正常に取得されます.(問題なし)@ApiParam(required = false)
を設定したり、この属性を設定しなかったりしたとき.効果は415エラー(メディアタイプパラメータはサポートされていません)が発生し、正常に取得されます.(期待と一致しません)@ApiParam(required = true)
、および@RequestParam(required = ture)
または@RequestParam
を設定する必要がある.@ApiParam
または@ApiParam(required = false)
、および@RequestParam(required = false)
を設定する必要がある.では、この小さな問題が発生した原因は何なのでしょうか.次のように考えます.
@ApiParam
注記のrequired
属性値のデフォルト値はfalse
です.@RequestParam
注記のrequired
属性値は、デフォルトではtrue
です.そうすると
@ApiParam
がfalse
に設定されていますがspringはこのパラメータが必須パラメータであると判断し、上記の問題を引き起こします.あなたの问题に役に立つことを望んで、私を支持するなら少し助けてあげましょう!