调用相同接口,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的值以字符串的类型传到前端,这样前端就能拿到正确的数据了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容