首頁  >  文章  >  Java  >  如何在 Spring MVC @ResponseBody 中回應 HTTP 400「錯誤請求」?

如何在 Spring MVC @ResponseBody 中回應 HTTP 400「錯誤請求」?

Barbara Streisand
Barbara Streisand原創
2024-10-31 05:54:01421瀏覽

How to respond with HTTP 400

Spring MVC @ResponseBody 回應HTTP 400 錯誤

使用Spring MVC 的@ResponseBody 方法開發您需要使用特定的HTTP 狀態代碼回應,例如400「錯誤請求」。

考慮以下操作方法:

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public String match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        // How to respond with HTTP 400 "Bad Request"?
    }
    return json;
}</code>

在此範例中,此方法使用 @ResponseBody 註解,表示傳回值應直接寫入HTTP響應體。但是,初始程式碼沒有提供回應 HTTP 400 錯誤的機制。

要解決此問題,可以考慮以下幾種方法:

  1. 將回傳類型變更為ResponseEntity:將方法的傳回類型變更為ResponseEntity,您可以存取允許設定HTTP 狀態代碼的方法。然後,您可以使用 ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null) 傳回 400 錯誤回應。
  2. 使用ResponseEntity Helper 方法:對於Sp​​ring 版本4.1 及更高版本,ResponseEntity 提供ResponseEntity.badRequest().body(null) 和ResponseEntity.ok(json) 等輔助方法可簡化簡化方法可簡化簡化響應創建過程。

因此,更新後的方法將如下圖所示:

<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.badRequest().body(null);
    }
    return ResponseEntity.ok(json);
}</code>

以上是如何在 Spring MVC @ResponseBody 中回應 HTTP 400「錯誤請求」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn