Java Spring-当@RequestBody为null时抛出的句柄异常



我在Java Spring Boot中有一个rest api。我正在向api发出POST请求。如果正文中有数据,它可以正常工作,但当没有数据通过时,它会给出400 Bad Request响应:

{
"timestamp": "2021-05-03T13:32:36.746+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<com.package.MyResponse> com.package.MyController.getData(com.package.MyRequest)",
"path": "/api/"
}

如何从响应消息中隐藏package informationclass name?它应该将台面返回为:

"message": "Required request body is missing."

一种选择是设置@RequestBody(required=false),然后在内部手动处理,但我想避免。

如果有人能帮忙就太好了。非常感谢。

您可以创建一个RestControllerAdvice,并使用ResponseEntityExceptionHandler对其进行扩展。在实现中重写相应的方法并发送自定义消息。在您的情况下,方法将是ResponseEntityExceptionHandler中的handleHttpMessageNotReadable

这是示例代码:

/**
* Intercept exception to response with error
*/
@RestControllerAdvice
public class ApplicationExceptionHandler extends ResponseEntityExceptionHandler {
/**
* {@inheritDoc}
*/
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers,
HttpStatus status, WebRequest request) {
// your custom implementation
}
}

最新更新