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