Sto utilizzando Spring MVC per una semplice API JSON, con un approccio basato su @ResponseBody
come il seguente. (Ho già un livello di servizio che produce JSON direttamente.)
@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@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;
}
Nello scenario indicato, qual è il modo più semplice e pulito per rispondere con un errore HTTP 400?
Mi sono imbattuto in approcci come:
return new ResponseEntity(HttpStatus.BAD_REQUEST);
... ma non posso usarlo qui poiché il tipo restituito del mio metodo è String, non ResponseEntity.
- Jonik
Cambia il tipo di reso in ResponseEntity<>
, quindi puoi utilizzare quanto segue per 400:
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
E per una richiesta corretta:
return new ResponseEntity<>(json,HttpStatus.OK);
Dopo la primavera 4.1 ci sono metodi helper in ResponseEntity che potrebbero essere usati come:
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
e
return ResponseEntity.ok(json);