ホームページ  >  記事  >  Java  >  Spring MVCの@ResponseBodyメソッドでHTTP 400「Bad Request」エラーを返す方法は?

Spring MVCの@ResponseBodyメソッドでHTTP 400「Bad Request」エラーを返す方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-06 02:02:02133ブラウズ

How to Return an HTTP 400

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 に変更します (T は予期される応答の型)。これにより、HttpStatus 列挙を利用して HTTP ステータス コードを指定できるようになります。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。