其余端点异常处理

时间:2019-06-19 09:31:48

标签: java spring-boot

下面是我的休息终点。我使用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)));
    }

1 个答案:

答案 0 :(得分:1)

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

如果输入合适,则返回true,否则返回false,您还可以在那里定义要显示的消息(如果用户输入错误)。