2016-03-25 13 views
1
public String(@RequestParam Integer id) { 
// ... 
} 

Wenn id Parameter nicht in der aktuellen Anfrage gefunden werden kann, werde ich 400 Statuscode mit leeren Antworttext erhalten. Jetzt möchte ich JSON String für diesen Fehler zurückgeben, wie kann ich es machen?Spring Boot: Wie behandelt 400 Fehler verursacht durch @RequestParam?

PS: Ich will nicht @RequestParam(required = false)

Antwort

0

Ich habe es geschafft. Überschreiben Sie einfach handleMissingServletRequestParameter() Methode in Ihrer eigenen ResponseEntityExceptionHandler Klasse.

@Override 
    protected ResponseEntity<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { 
     log.warn("miss Request Param"); 

     return new ResponseEntity<>(new FoxResponse(ErrorCode.ARG_INVALID), status); 
    } 
0

Versuch verwenden @PathVariable zu verwenden, ist es hoffen, dass Ihre Anforderung erfüllt.

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
public ResponseEntity<User> getUser(@PathVariable("id") long id) { 
    System.out.println("Fetching User with id " + id); 
    User user = userService.findById(id); 
    if (user == null) { 
     System.out.println("User with id " + id + " not found"); 
     return new ResponseEntity<User>(HttpStatus.NOT_FOUND); 
    } 
    return new ResponseEntity<User>(user, HttpStatus.OK); 
} 
Verwandte Themen