Spring MVC @ResponseBody メソッドで HTTP エラーを処理する方法
問題:
の場合@ResponseBody アプローチで Spring MVC を使用する場合、特定の条件が満たされない場合、メソッドはどのように HTTP 400「不正なリクエスト」エラーで応答できますか?
解決策:
元のアプローチ:
元のコードは、条件が満たされない場合に String を返そうとしましたが、@ResponseBody は ResponseEntity オブジェクトを期待しているため、これは実現できません:
<code class="java">@ResponseBody public String match(@PathVariable String matchId) { String json = matchService.getMatchJson(matchId); if (json == null) { // TODO: how to respond with e.g. 400 "bad request"? } return json; }</code>
解決策:
メソッドの戻り値の型を ResponseEntity
<code class="java">@ResponseBody public ResponseEntity<String> match(@PathVariable String matchId) { String json = matchService.getMatchJson(matchId); if (json == null) { return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } return new ResponseEntity<>(json, HttpStatus.OK); }</code>
Spring 4.1 以降のよりクリーンな代替方法としては、ResponseEntity のヘルパー メソッドを利用します。
<code class="java">@ResponseBody public ResponseEntity<String> match(@PathVariable String matchId) { String json = matchService.getMatchJson(matchId); if (json == null) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); } return ResponseEntity.ok(json); }</code>
このアプローチ実行結果に基づいて、適切な HTTP ステータス コードとコンテンツを返すことができます。
以上がSpring MVCの@ResponseBodyメソッドでHTTP 400「Bad Request」エラーを返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。