java - spring boot请求体中有额外参数时如何抛出异常

标签 java spring-boot spring-mvc spring-data-jpa

在我的上一个项目中,当请求体包含额外参数时,需要抛出异常。

如果请求会是这样

{
   "test":"body",
    "name":"HR 1",
    "location":"Location"
}

其中测试参数是不必要的,我必须返回一个应该像这样的响应

{
    "timestamp": "2022-05-07T00:13:59.144657",
    "status": "500",
    "error": "Internal Server Error",
    "message": "test : must not be provided",
    "path": "/api/departments/HR"
}

我已经分享了答案。我是如何处理的。

最佳答案

我在 application.properties 中添加了这一行。

spring.jackson.deserialization.fail-on-unknown-properties=true

这有助于我们使反序列化在未知属性上失败并抛出一个我们可以使用 handleHttpMessageNotReadable 处理的异常

创建 Controller 通知来处理异常

@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
    @Override
    protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
        return new ResponseEntity("Your Response Object", HttpStatus.INTERNAL_SERVER_ERROR);
    }

}

这就是解决方案。

关于java - spring boot请求体中有额外参数时如何抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72146456/

相关文章:

java - 推送到关键时无法与端口 8080 建立 TCP 连接

java - 如何从其他服务获取@GetMapping内部的路径

java - Spring JPA 属性表达式通过列表中项目的交集查找

Java组播监听和IGMP

java - 在 Spark 2.2.0 中设置 DEFAULT_MAX_TO_STRING_FIELDS

java - 使用 Maven 包添加第 3 方 jar

java - Spring事务抛出异常后不回滚

java - 是否应该使用自定义 SecurityManager 来对 javax.script.ScriptEngine 进行沙盒处理?

java - 使用 Jackson 2.0 在 Map 中序列化 JSON 对象

java - 不支持 Spring Social/connect/twitter 请求方法 'GET'