Spring MVC @ResponseBody メソッドで文字列の戻り値の型を使用して HTTP 400 エラーを処理する方法

Patricia Arquette
リリース: 2024-10-28 02:30:01
オリジナル
358 人が閲覧しました

How to Handle HTTP 400 Errors in Spring MVC @ResponseBody Methods with String Return Type?

文字列戻り値型を持つ Spring MVC の @ResponseBody メソッドでの HTTP 400 エラー処理

Spring MVC を使用して API を実装する場合、次の処理が重要ですエラーは優雅に。応答すべき一般的なエラー コードの 1 つは、「不正なリクエスト」を示す HTTP 400 です。

match メソッドが @ResponseBody でラップされた文字列を返す特定のシナリオでは、HTTP 400 で応答する方法を疑問に思うかもしれません。エラーコード。 ResponseEntity を使用した従来のアプローチメソッドの戻り値の型が String であるため、ここでは直接適用できません。

これを解決するには、match メソッドの戻り値の型を ResponseEntity に変更することを検討してください。これにより、HTTP ステータス コードをより明示的に処理する柔軟性が得られます。

更新されたメソッド:

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@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>
ログイン後にコピー

この変更されたアプローチにより、応答エンティティを返すことができます。適切な HTTP ステータス コード。 matchId が無効な場合は、HTTP 400 ステータスの ResponseEntity を返すことができます。有効なリクエストの場合、HTTP 200 ステータスと JSON レスポンスを含む ResponseEntity を返すことができます。

Spring 4.1 以降:

Spring 4.1 以降、ResponseEntity クラスは以下を提供します。より簡潔なアプローチに使用できるヘルパー メソッド:

更新されたメソッド (Spring 4.1 ):

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@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>
ログイン後にコピー

以上がSpring MVC @ResponseBody メソッドで文字列の戻り値の型を使用して HTTP 400 エラーを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート