下面是我的休息端点。我使用 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/