likes
comments
collection
share

【踩坑记】前后端联调中遇到的两个坑

作者站长头像
站长
· 阅读数 95

最近在与后端联调接口时,不太顺利,接连遇到两个坑,花了一些时间,才找到原因,故此记录一下。

一、GET请求正常,POST请求报错

一开始以为是后端接口问题,就找后端排查一下,结果后端小伙伴说,没有接收到前端传过来的数据,当然报错。

数据没传过去?怎么会?浏览器的网络传输控制台,明明显示了有POST的参数数据啊。

检查了proxy代理,封装的axios,都和以往项目中写法一样,没什么问题。

那么问题,到底出现在哪呢?

又去试了一下其他地方的POST请求,发现都不行。也就就是说,POST请求报错,非单个现象,而是项目中所有的POST请求都不行。

自己实在是找不到问题所在了,只好去请教大佬。大佬一看,说自己貌似遇到过类似的问题,然后让我看看vue.config.js中有没有使用mock,如果用了,注释掉试试。

打开vue.config.js文件一看,果然有mock,顺手注释掉。

devServer: {
    // before: require(’./mock/mock-server.js’)
    proxy: {
      "/api": {
        target: "http://localhost:3000",
        changeOrigin: true, // 设置这个参数可以避免跨域
        pathRewrite: {
          "^/api": "/"
        }
      }
    }
  }

再去重新发起了POST请求,成功了!原来,mock会影响真实的POST请求!

二、Preview和Response里面后端返回的数据不一致

【踩坑记】前后端联调中遇到的两个坑

最近通过企业id请求企业详情,id传过去了,后端却返回详情数据为空,没有该企业实体。

心想肯定是后端id弄错了,于是便又去找后端小伙伴排查。后端排查一番,说返回的id是正确的,然后给我看了数据库的数据。

咦,数据库的id数据,怎么和前端获取的id数据不一样。中间发生了什么。

后来,后端小伙伴又尝试了一番,无论是接口文档,还是postman,试了都没有问题。然后,又来查看了我浏览器的Response, 也是对的。

这时,我才发现,Preview里的id和Response里的id不一样。我平时喜欢看Preview里面的数据,因为比较直观,所以当后端打开Response时,我才意识到两个里面的数据不一致。

既然后端返回数据没问题,那问题就出在前端了。没办法,我只能自己去搜索了,还真搜到了。

"JavaScript中由于Number类型的自身原因,并不能完全表示Long型的数字,在Long长度大于17位时会出现精度丢失的问题,超过17位的部分浏览器会转换为0显示"

然后,与后端小伙伴商量了一番,最终决定由后端将long型改为String类型。问题终于完美解决!

转载自:https://juejin.cn/post/7056314471492354062
评论
请登录