rvi*_*t34 6 java rest spring spring-boot spring-4
我正在使用Spring4开发RESTful应用程序.我想在POST请求中没有传递正文时处理大小写.我写自定义异常处理程序:
@ControllerAdvice
public class MyRestExceptionHandler {
@ExceptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<MyErrorResponse> handleJsonMappingException(JsonMappingException ex) {
MyErrorResponse errorResponse = new MyErrorResponse("request has empty body");
return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(Throwable.class)
public ResponseEntity<MyErrorResponse> handleDefaultException(Throwable ex) {
MyErrorResponse errorResponse = new MyErrorResponse(ex);
return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
}
}
@RestController
public class ContactRestController{
@RequestMapping(path="/contact", method=RequestMethod.POST)
public void save(@RequestBody ContactDTO contactDto) {...}
}
Run Code Online (Sandbox Code Playgroud)
但是当它发生时,这些方法将不会被调用.我刚收到400 BAD REQUEST http状态和空身的响应.有人知道如何处理吗?
rvi*_*t34 14
我找到了如何抓住它.我的解决方案是:
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
// paste custom hadling here
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我需要处理所有具有无效参数的请求。所以我用方法扩展了我的类并ResponseEntityExceptionHandler重写了方法handleMissingServletRequestParameter。您可以在类中找到自己定义的处理程序ResponseEntityExceptionHandler
@ControllerAdvice
public class YourExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
public final ResponseEntity handleAllExceptions(Exception ex) {
// Log and return
}
@Override
public ResponseEntity<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
// Do your code here
return new ResponseEntity<>("YOUR REQUEST PARAMS NOT MATCH!");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13312 次 |
| 最近记录: |