axios解决后端传来的id太长导致精度丢失(超过16位的数字会酿成0000)的问

[复制链接]
发表于 2024-6-10 10:24:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 办法一:让后端把id传成字符串范例;
办法二:用jsonBig转换为bigInt数字范例:
1.在项目根目次打开下令行输入下令安装jsonBig插件:
  1. npm install [email protected]
复制代码
2.在封装的哀求中使用插件,核心是在创建sxios实例的时候如果transformResponse这个配置项,可以拦截接口返回的内容进行处理(因为默认会使用JSON.parse()解析从后端的来的数据),再用json-bigint插件把长范例数字解析成字符串,解析失败就代表没有长数字可解析,使用JSON.parse()解析
  1. import axios from 'axios';
  2. import jsonBig from 'json-bigint'
  3. //利用axios对象的方法create,去创建一个axios实例
  4. const api = axios.create({
  5.     //基础路径
  6.     baseURL: "http:xxxxxxxxx", // 后端地址
  7.     timeout: 60000, // 请求超时时间
  8.     transformResponse: [function (data) {//transformResponse这个配置项可以拦截接口返回的内容进行处理
  9.         try {
  10.             // 如果大数字类型转换成功则返回转换的数据结果
  11.             return jsonBig.parse(data);
  12.         } catch (err) {
  13.             // 如果转换失败,代表没有长数字可转,正常解析并返回
  14.             return JSON.parse(data)
  15.         }
  16.     }]
  17. })
  18. //最后一步 暴露出去实例导出
  19. export default api
复制代码
3.使用:
  1. 使用的时候用id.toString()方法把bigInt类型的数字变成字符串类型就能使用了
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表