首页 > 解决方案 > 休息端点异常处理

问题描述

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

本地主机:8080/order-service/save-order/1

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

本地主机:8080/order-service/save-order/abc

spring boot 隐式处理异常并给出 400 bad request。

我想要的是当参数的变量类型不等于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)));
    }

标签: javaspring-boot

解决方案


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

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


推荐阅读