axios发送post请求时,这样的数据格式对吗

Neoo1984
  • 53

image.png
image.png

这是发出去的参数listQuery

      listQuery: {
        current: 1,
        size: 20,
        factoryName:"ddd",
        address:"ddd"
      },
getList() {
      this.listLoading = true
      getFactoryList(this.listQuery).then(response => {
        // this.list = response.data.records
        // this.total = response.data.total

      })
    },

这是getFactoryList

export function getFactoryList(params) {
 return request({
   url: '/factory/page',
   method: 'post',
   header:{
     'Content-Type':'application/json'  //如果写成contentType会报错
   },
   params
 })
}

这里的getFactoryList里,需要设置content-type吗?axios默认就是它吧?然后发出的直接是对象会自动转化成json吗?这样在浏览器的呈现结果对吗?拼接在浏览器后面的不是get了吗,想确认如果post请求的话,该怎么改

============================================

找到了, 应该是用params的问题,改成了data,有没有详细解释一下这个

回复
阅读 499
2 个回答

最近好像挺多提的问题都是 parmas 传入的参数的形式。

getFactoryList(params) {
 return request({
   url: '/factory/page',
   method: 'post',
   header:{
     'Content-Type':'application/json'  // 请求格式请按照标准格式书写
   },
   params   // 大部分的问题都在这里,你的 params 需要用 data 传入,axios 才能接收到
 })
export function postAction (url, parameter) {
  return axios({
    url: url,
    method: 'post',
    data: parameter // 问题在这里
  })
}

然后是默认值的问题 axios 的默认的 headers['Content-Type'] = 'application/x-www-form-urlencoded'

可以完整的读一下 Axios 的文档
比如说 默认值实例配置项 以及 拦截器

最后贴一下 Ant-Design-Vue-Pro 封装的 Axios:


已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

axios 文档中有说。

其实你可以理解为想带在url上就用params

想放在body中就用data


url 上的话,只有一种格式。body中的话支持的格式就比较多了。json、formdata之类的

按照规范来讲,post还是应该把参数放入body中。

宣传栏