设置请求参数的大小限制

时间:2019-03-19 09:29:56

标签: java spring rest

目前,我有这样的API:

    @GetMapping(/user/{id})
    public ResponseEntity<MyClass> getById(@PathVariable @Max(value = Long.MAX_VALUE, message= ID_LENGTH_EXCEED_MESSAGE) Long id) {
      //some code here 
        return  new ResponseEntity<>(HttpStatus.OK);
    }

问题是当我像这样使用API​​时:

    {baseUrl}/user/1111111111111111111111111111111111111111111

我收到这样的错误消息:

    Failed to convert value of type 'java.lang.String' to required type 'long'; 
    nested exception is java.lang.NumberFormatException: For input string: 
    "1111111111111111111111111111111111111111111"

您是否知道如何在path变量甚至请求参数中限制值的长度并获得自定义的受限消息?

3 个答案:

答案 0 :(得分:1)

似乎Java无法处理太大的int或long数,因此无法处理为string并使用string的length属性处理并解析为int或long。

注意: 如果字符串的长度超过整数或long可以支持的长度,则可以使用return函数或任何回调函数。

Java变量范围:-

enter image description here

答案 1 :(得分:0)

Here介绍了如何引发自定义错误。我建议接受String作为用户ID的value。当value的解析失败时,您可以抛出自定义错误。

答案 2 :(得分:0)

  1. 将该其余Service方法的输入param(id)从Long更改为String
    然后检查字符串长度,并在此处进行验证
  2. 然后将该String值转换为如下所示的long:

    Long idValue = Long.valueOf(Id);

    现在在这里添加您现有的代码