Heim  >  Artikel  >  Java  >  Wie antworte ich mit HTTP 400 „Bad Request' in Spring MVC @ResponseBody?

Wie antworte ich mit HTTP 400 „Bad Request' in Spring MVC @ResponseBody?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 05:54:01419Durchsuche

How to respond with HTTP 400

Antworten mit HTTP 400-Fehler in Spring MVC @ResponseBody

Bei der Entwicklung von JSON-APIs mit dem @ResponseBody-Ansatz von Spring MVC kann es Szenarien geben, in denen Sie müssen mit bestimmten HTTP-Statuscodes antworten, z. B. 400 „Bad Request“.

Betrachten Sie die folgende Aktionsmethode:

<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>

In diesem Beispiel ist die Methode mit @ResponseBody annotiert , was angibt, dass der Rückgabewert direkt in den HTTP-Antworttext geschrieben werden soll. Der ursprüngliche Code bietet jedoch keinen Mechanismus für die Reaktion mit einem HTTP-400-Fehler.

Um dieses Problem zu beheben, sind mehrere Ansätze zu berücksichtigen:

  1. Ändern des Rückgabetyps in ResponseEntity: Durch Ändern des Rückgabetyps der Methode in ResponseEntity<> erhalten Sie Zugriff auf Methoden, mit denen Sie den HTTP-Statuscode festlegen können. Sie können dann ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null) verwenden, um eine 400-Fehler-Antwort zurückzugeben.
  2. Verwendung von ResponseEntity-Hilfsmethoden: Für Spring-Versionen 4.1 und höher bietet ResponseEntity Hilfsmethoden wie ResponseEntity.badRequest().body(null) und ResponseEntity.ok(json), um den Antworterstellungsprozess zu vereinfachen.

Daher würde die aktualisierte Methode wie folgt aussehen:

<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>

Das obige ist der detaillierte Inhalt vonWie antworte ich mit HTTP 400 „Bad Request' in Spring MVC @ResponseBody?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn