HTTP 400-Fehlerbehandlung in den @ResponseBody-Methoden von Spring MVC mit String-Rückgabetyp
Bei der Implementierung einer API mit Spring MVC ist die Handhabung von entscheidender Bedeutung Fehler elegant. Ein häufiger Fehlercode, auf den reagiert werden muss, ist HTTP 400, was auf eine „fehlerhafte Anfrage“ hinweist.
In Ihrem gegebenen Szenario, in dem die Match-Methode einen in @ResponseBody eingeschlossenen String zurückgibt, fragen Sie sich möglicherweise, wie Sie mit HTTP 400 reagieren sollen Fehlercode. Der traditionelle Ansatz mit ResponseEntity
Um dieses Problem zu beheben, sollten Sie den Rückgabetyp Ihrer Match-Methode in ResponseEntity
Aktualisierte Methode:
<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>
Dieser modifizierte Ansatz ermöglicht es Ihnen, eine ResponseEntity mit einem zurückzugeben entsprechenden HTTP-Statuscode. Wenn die matchId ungültig ist, können Sie ResponseEntity mit dem HTTP-400-Status zurückgeben. Für eine gültige Anfrage können Sie ResponseEntity mit HTTP 200-Status und der JSON-Antwort zurückgeben.
Spring 4.1 und höher:
Ab Spring 4.1 stellt die ResponseEntity-Klasse Folgendes bereit Hilfsmethoden, die Sie für einen prägnanteren Ansatz verwenden können:
Aktualisierte Methode (Frühjahr 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>
Das obige ist der detaillierte Inhalt vonWie behandelt man HTTP 400-Fehler in Spring MVC @ResponseBody-Methoden mit String-Rückgabetyp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!