0

我有一个控制器,它在请求正文中获取 json 作为字符串,如下所示

@PostMapping("/addUser")
public ResponseEntity<?> addUser (@RequestBody String userJson,HttpServletRequest request) {
   log.info("inside add user controller")
   String responseStatus = serviceInterface.addUser (userJson);
   return new ResponseEntity (responseStatus);
}

请求正文是

{
 "user": {
   "username": "testuser",
   "userId": 12345678901233,
   "phonenumber": "9876756475",
   "emailaddress": "test@org.com"
 }
}

我面临的问题是,当 userId 属性的位数超过 10 位时,控制器返回 404 错误,请求甚至不会到达控制器,但是如果我将位数减少到小于 10 位,例如 123456789,我会得到实际的预期响应。我将请求正文保留为字符串的原因是因为有时请求可能是 graphql 字符串或 JSON 字符串,但这两种情况都会发生。

4

3 回答 3

2

这可能是因为 java 中 Integer 的范围是 userId 字段的类型。

java中int的范围是-2,147,483,648 .. 2,147,483,647。

因此,请尝试在此范围内和外,并检查它是否适用于该范围并且不适用于超出范围,那么这就是问题所在。

在这种情况下,您必须将 int 更改为 long 数据类型。

于 2020-10-16T04:31:35.440 回答
1

尝试将其更改为 Long 类型。

int 的最大值是 2147483647 而 Long 是 9223372036854775807

于 2020-10-16T04:34:36.477 回答
0

这背后的可能原因是用于usedId.

对于int,范围是直到2,147,483,647尝试将long具有范围的数据类型更改为直到9,223,372,036,854,775,807

于 2020-10-16T05:38:31.673 回答