后端返回大数问题

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

  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
    }
  },
],
相关推荐
鼎道开发者联盟1 分钟前
鼎享会 | OpenClaw Control UI 前端架构全解析:自研 UI 对接 Server 实操指南
前端·ui·架构·openclaw·control ui
尘世中一位迷途小书童3 分钟前
一套完整的给予ceium封装的组件库,可满足企业级开发
前端
Z_Wonderful4 分钟前
微前端:Webpack 配置 vs Vite 配置 超清晰对比
前端·webpack·node.js
码云数智-园园9 分钟前
HTTPS是如何工作的?从HTTP到HTTPS的加密演进
前端
隔窗听雨眠17 分钟前
HTML头部元信息避坑指南
前端·html
Gauss松鼠会24 分钟前
【openGauss】openGauss 磁盘引擎之 ustore
java·服务器·开发语言·前端·数据库·经验分享·gaussdb
LIO25 分钟前
前端响应式页面开发全攻略:核心技术 + 实现效果 + 实战指南
前端·响应式设计
许彰午34 分钟前
Spring Boot + Vue 实现 XML 动态表单:固定字段 + 自由扩展方案
xml·vue.js·spring boot
得物技术41 分钟前
AI驱动:从运营行为到自动化用例的智能化实践|得物技术
前端·ai编程·全栈
前端那点事42 分钟前
Vue并发控制|几十个请求高效管控(实战方案+可运行代码)
前端·vue.js