java - Rest 端点异常处理

标签 java spring-boot

下面是我的休息端点。我使用 Long 作为 userId 的数据类型,当通过如下 postman 调用端点时它工作正常,我能够显式处理异常。

localhost:8080/order-service/save-order/1

但是当我用字符串类型参数这样调用时,

localhost:8080/order-service/save-order/abc

spring boot 隐式处理异常并给出 400 错误请求。

我想要的是在参数的变量类型不等于 long 时抛出一条自定义错误消息,如“请发送正确的 userId”。

@PostMapping(path = "/save-order/{userId}")
    @ResponseBody
    public ResponseEntity<ExceptionResponse> addOrder(@Valid @RequestBody 
         OrderDTO orderDto, @Valid @PathVariable(name = "userId") Long userId) throws BatchException, UserExceptions, BatchIdException, InvalidDateFormatException, DeliveryIdException,BatchMerchantException {
        return ResponseEntity.ok(new ExceptionResponse("Order Saved", 201, orderServiceImpl.saveOrder(orderDto, userId)));
    }

最佳答案

您可以实现自己的自定义 validator ,请参见此处:https://www.baeldung.com/spring-mvc-custom-validator

如果输入正确则返回 true,否则返回 false,您还可以在此处定义要在用户输入错误时向其显示的消息。

关于java - Rest 端点异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664472/

相关文章:

java - JSP和SPRING启动: Generate CSV file from JSON input?

java - MapReduce程序中的XMLParser失败,并显示以下消息:实体名称必须立即在实体引用中的 '&'之后。

java - @singleton 表现得像@stateless bean

spring-boot - Spring Boot Multi Module Gradle Project 类路径问题 : Package Not Found, Symbol not Found

java - 当我使用继承实体的存储库时如何修复 "No property [repositoryMethod] found for type [entity]!"?

java - 如何使用 Spring MVC/Spring Boot 编写适当的全局错误处理程序

java - 使用 webdriver 找不到元素

java - 如何使用java在给定路径的 super 目录中查找特定文件夹

java - 接口(interface)类型的多态数组的有效成员

spring-boot - Micrometer 与 Prometheus Pushgateway 不发送最近的指标