后端返回大数问题

这个问题并不难,但是在开发的时候没有注意到

  1. 后端返回了一个列表数据,包含id,这个id是一个大数,列表进入详情,需要将id传入到详情页面

  2. 详情页面内部通过id获取数据一直404,id不正确

  3. 找问题,从路由传参到请求数据发现id没有问题,然后和后端进行联调,发现后端返回的id和我获取的id不一致

  4. 实际问题产生的原因:后端返回了一个超过2的53次方的一个大数,而axios底层获取到后端原始json数据后通过JSON.parse处理,导致处理后的大数不精准了

  5. 让后端返回字符串格式

  6. 前端处理:

    1. 后端返回原始数据, 不让axios处理, 我们处理然后在交给aioxs
    2. axios他有一个配置函数transformResponse, 获取到的后端返回的原始数据json数据,在transformResponse内部通过JSONBig(json-bigint)处理后端返回的json数据,他在处理json数据的时候,会将大数处理为对象,将大数对象转为字符串使用,得到了正确的id,内部重写了toString

    npm i json-bigint

javascript 复制代码
import jsonBig from 'json-bigint'

const JSONBig = jsonBig({ storeAsString: true })

transformResponse: [
  function (data) {
    // 1. 找到了处理的时机
    try {
      return JSONBig.parse(data) // a.num + ''        155 4993 7742 
    } catch (err) {
      return data
    }
  },
],
相关推荐
挣扎与觉醒中的技术人5 分钟前
【技术干货】三大常见网络攻击类型详解:DDoS/XSS/中间人攻击,原理、危害及防御方案
前端·网络·ddos·xss
zeijiershuai10 分钟前
Vue框架
前端·javascript·vue.js
写完这行代码打球去12 分钟前
没有与此调用匹配的重载
前端·javascript·vue.js
华科云商xiao徐12 分钟前
使用CPR库编写的爬虫程序
前端
狂炫一碗大米饭15 分钟前
Event Loop事件循环机制,那是什么事件?又是怎么循环呢?
前端·javascript·面试
IT、木易16 分钟前
大白话Vue Router 中路由守卫(全局守卫、路由独享守卫、组件内守卫)的种类及应用场景
前端·javascript·vue.js
顾林海17 分钟前
JavaScript 变量与常量全面解析
前端·javascript
程序员小续17 分钟前
React 组件库:跨版本兼容的解决方案!
前端·react.js·面试
乐坏小陈18 分钟前
2025 年你希望用到的现代 JavaScript 模式 【转载】
前端·javascript
生在地上要上天18 分钟前
从600行"状态地狱"到可维护策略模式:一次列表操作限制重构实践
前端