前端js ajax或axios封装请求形式为Request Payload的数据问题

问题:对接过程中使用postMan或者其他工具在对接的时候发现请求中使用的是Request Payload,对于一个有工作经验但是没有主动去配置axios的来说,确实是需要查资料的,开发过程中与后端人员对接接口一直对接不成功,问题在于前端架构师没有配置。

问题现象:在开发过程中,我们请求一直如下图所示,请求方式有post和get,但我们请求的Content-Type一直是如下图所示的(Content-Type: application/x-www-form-urlencoded;charset=UTF-8),数据都是以form Data方式去请求。忽然一个接口 如下图二所示,Content-Type以application/json(Content-Type: application/json)形式去传,数据以Request Payload的形式来传,导致出现接口调试失败!
在这里插入图片描述
图一 formData形式传数据

在这里插入图片描述
图二 request Payload方式传数据

解决方法:
1,前端在请求接口的封装中,添加headers,如下所示,其中useRequestBody 是我自己封装的字段,param是一个对象

export function GetDataList (param) {
  return request({
    url: '/search/getRecomsByEs',
    method: 'POST',
    data:param,
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    },
    useRequestBody:true
  })
}

2,在axios拦截器中进行修改,useRequestBody是自己封装的,如上代码

http.interceptors.request.use((config) => {
  if (config.method === 'post') {
    if(config.useRequestBody){
      config.headers = {
        'Content-Type': 'application/json;charset=UTF-8'
      }
    }else {
      config.data = qs.stringify(config.data);
    }

  }else {
    console.log("config====",config);

  }
  return config
}, (error) => {
  console.log(error)
  return Promise.reject(error)
})

最后,修改之后,请求成功
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值