Heim  >  Artikel  >  Java  >  Wie kann ein HTTP 400-Fehler „Bad Request“ in den @ResponseBody-Methoden von Spring MVC zurückgegeben werden?

Wie kann ein HTTP 400-Fehler „Bad Request“ in den @ResponseBody-Methoden von Spring MVC zurückgegeben werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-06 02:02:02133Durchsuche

How to Return an HTTP 400

So behandeln Sie HTTP-Fehler in Spring MVC @ResponseBody-Methoden

Problem:

Wann Wie kann eine Methode unter Verwendung von Spring MVC mit einem @ResponseBody-Ansatz mit einem HTTP 400-Fehler „Bad Request“ antworten, wenn eine bestimmte Bedingung nicht erfüllt ist?

Lösung:

Ursprünglicher Ansatz:

Der ursprüngliche Code hat versucht, einen String zurückzugeben, wenn die Bedingung nicht erfüllt war, was nicht möglich ist, da @ResponseBody ein ResponseEntity-Objekt erwartet:

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

Lösung:

Ändern Sie den Rückgabetyp der Methode in ResponseEntity, wobei T der erwartete Antworttyp ist. Dadurch können Sie die HttpStatus-Enumeration nutzen, um den HTTP-Statuscode anzugeben:

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

Für eine sauberere Alternative nach Spring 4.1 verwenden Sie die Hilfsmethoden in 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>

Dieser Ansatz ermöglicht die Rückgabe eines geeigneten HTTP-Statuscodes und -Inhalts basierend auf dem Ausführungsergebnis.

Das obige ist der detaillierte Inhalt vonWie kann ein HTTP 400-Fehler „Bad Request“ in den @ResponseBody-Methoden von Spring MVC zurückgegeben werden?. 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