Apifox 中接口返回的数据过长,导致精度丢失怎么解决?
在 Apifox 中调试接口时发现,当接口返回的响应数据过长时(通常超过 18 位)会导致精度丢失。具体来说,实际返回的数据应该是按预期的格式,但是某些字段的数值却出现了自动截断的情况,导致了数值的不准确性。
例如,本来实际返回的数据应该是这样子的:
{
"code": "0",
"message": "success",
"data": {
"agentId": 123456789123456789123,
"status": "ok",
"name": "dog"
}
}
但是,却变成了这样:
{
"code": "0",
"message": "success",
"data": {
"agentId": 123456789123456800000,
"status": "ok",
"name": "dog"
}
}
问题分析
里面的 agentId 字段的值跟后端实际返回值不一样,后几位的值自动变成了 0,导致了数值的不准确性。出现这种情况是因为该字段值长度超出了限制,数据过长所以导致精度丢失,在接收端处理时,超出了系统的处理范围,导致了末尾数字被自动置为 0 的情况。
为了解决这个问题,在 Apifox 中提供了一个简单的解决方案。
解决方案
在【项目设置->功能设置->高级设置】中,把“兼容 BigInt”选项开启即可。
开启之后,可以在项目里重新发起请求,观察问题是否得到解决。
总结
通过在 Apifox 中开启“兼容 BigInt”选项,系统会对大数值进行特殊处理,从而避免了数据精度丢失的问题。这样一来,你应该能够顺利地获取到完整准确的数据响应了。
知识扩展: