Springで_@RequestBody
_注釈を使用するときに、REST API呼び出しで本文をオプションにするにはどうすればよいですか?
Springの最新バージョンでは、_@RequestBody
_注釈を使用すると、クライアントはオプションにせずに常にbodyを送信します。
@RequestBody (required=false)
を試しましたが、うまくいきませんでしたが、それでも私のリクエストはnullとして送られてきました。
ボディを必須にすることなく、要求を適切な必須オブジェクトに変換するにはどうすればよいですか?
例えば:
_@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
// ...
}
_
ここでは、POSTを使用しますが、ボディを使用しない従業員を追加します。それ、どうやったら出来るの?空の本文を送信すると、Springの最新バージョンでは「body missing」というエラーがスローされます...
@Santosh、あなたが参照している必要な引数がどれなのかわかりません。マイクはすでに@RequestBody (required=false)
を使用しようとしたが、リクエストはまだnullであると述べました。もっと詳しく説明して例を挙げてください。
@Mike、おそらくあなたの目的に合った別のコンバーターを用意することができます。
注:Spring v4.1.6で同じ問題が発生し、Mikeがそれを使用している可能性があることに気付きました。
バージョンに問題があったため、3.2以降のSpringバージョンを使用していると思います。 @ RequestBodyには、リクエスト本文をオプションにするための必須パラメーターが必要です
次のリンクをご覧ください Spring @RequestBody Anotation
@RequestBody
本文は引数を取りますrequiredこれはデフォルトでtrueです。 falseに指定すると役立ちます
public abstractboolean required
本文コンテンツが必要かどうか。 デフォルトはtrue、本文コンテンツがない場合は例外がスローされるです。本文のコンテンツがnullのときにnullを渡す場合は、これをfalseに切り替えます。
Java.util.Optional
を使用できます:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Optional<Employee> employee){
// ...
}