调用相同接口,postman和浏览器Preview数据不一致的问题

前后端联调过程中发现的问题。

情况:系统登录后返回的id值,存在浏览器缓存中,后面使用这个id值作为参数传回后端,后端返回信息说这个id不存在。跟后端说明这个情况的时候,他们拿着postman请求结果说接口没有写错,是我数据传错了,我拿着浏览器Preview里面的数据和他们说后端传过来的id值就是这个。然后我使用postman调用接口,得到以下结果:


postman调用结果

而浏览器Preview中的结果:


Preview数据

浏览器拿到的id和后端传过来的id不一致,再使用这个id作为去后端请求数据肯定是拿不到结果的。

为什么postman和浏览器Preview里面id值会差1?

原因:后端使用的是Java,Java的Long型整数超过了JS可以精确表示的大数范围,这就导致了可能会出现精度丢失的情况,JavaScript中可以安全使用的最大整数和最小整数可以通过Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER得到。


JavaScript安全使用整数范围

解决方案:让后端将id的值以字符串的类型传到前端,这样前端就能拿到正确的数据了。

你可能感兴趣的:(调用相同接口,postman和浏览器Preview数据不一致的问题)