下面是我的休息终点。我使用Long作为 userId 的数据类型,当通过如下所示的邮递员调用端点时,它可以正常工作,并且我能够显式地处理异常。
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)));
}
答案 0 :(得分:1)
您可以实现自己的自定义验证器,请参见此处:https://www.baeldung.com/spring-mvc-custom-validator
如果输入合适,则返回true,否则返回false,您还可以在那里定义要显示的消息(如果用户输入错误)。