文字列を返す Spring MVC @ResponseBody メソッドで HTTP 400 エラーに応答する方法 質問する

文字列を返す Spring MVC @ResponseBody メソッドで HTTP 400 エラーに応答する方法 質問する

私は次のようなアプローチで、シンプルな JSON API に Spring MVC を使用しています@ResponseBody。(JSON を直接生成するサービス レイヤーはすでにあります。)

@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@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;
}

与えられたシナリオでは、HTTP 400 エラーで応答を返す最もシンプルでクリーンな方法は何ですか?

次のようなアプローチに遭遇しました:

return new ResponseEntity(HttpStatus.BAD_REQUEST);

...ただし、メソッドの戻り値の型は ResponseEntity ではなく String なので、ここでは使用できません。

ベストアンサー1

戻り値の型を に変更するResponseEntity<>と、400 に対して以下を使用できます。

return new ResponseEntity<>(HttpStatus.BAD_REQUEST);

正しいリクエストの場合:

return new ResponseEntity<>(json,HttpStatus.OK);

Spring 4.1 以降では、ResponseEntity に次のように使用できるヘルパー メソッドがあります。

return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);

そして

return ResponseEntity.ok(json);

おすすめ記事