axios的content-type是自动设置的

post请求中的Content-Type都可以根据传参内容自动设置

/**

     * Content-Type: multipart/form-data; boundary=----WebKitFormBoundary95DhtY5xDyMD7mW5

      这种typeof 也是对象  FormData

      Content-Type: application/x-www-form-urlencoded 的data的typeof 是string

    */

参考:

axios的content-type是自动设置的 - 易学编程网

一.  axios参数的传递方式

    首先我们要知道  参数传递一般有两种,一种是 使用 params, 另一种是 data的方式,有很多的时候我们看到的前端代码是这样的。

   1. get请求:

axios({
    method: 'GET',
    url: 'xxxxx',
    params: params,
  })
或者 
axios({
    method: 'GET',
    url: '/xxx?id=' + xxx,
  })

      2. post请求

axios({
    method: 'POST',
    url: '/xxxxx',
    data: params,
  })
  或者
 axios({
    method: 'POST',
    url: '/xxxxx',
    params: params,
  })

 3. params 的形式的传参 参数会被拼接到url上面(params 是查询参数,拼在 URL 问号后面的)   如下图: 

      

    4. data形式传参, axios会自动处理设置Content-Type不需要手动设置

    

      (1) 比如发送一个下面的请求, 会发现请求头的content-type是application/json;charset=UTF-8

axios({
        url: '/login',
        method: 'post',
        data: {email: 'xxxx', password: 123123}
})

        (2) 比如发送一个上传文件的请求formdata, 会发现请求头的content-type是multipart/form-data

let formData = new FormData()
formData.append('file', file)
axios({
        url: '/login',
        method: 'post',
        data: formData 
})

二 . 查看axios源码, 对比 data和params两种参数处理方法

      1. 处理data

  在axios文件中 的 core/dispatchRequest.js 中:

          

        在 axios 的 default.js 中,有一个函数专门转换 data 参数的 :

            

              注意: 上面只是举例 data 传递参数的一种情况哈!其实data 也有在地址栏 上 拼接的情况,或者 是文件上传的等情况。太多了,这里 只是讲清楚使用的方式。

              2.  处理 params

         在axios文件中 的 adapt/ xhr.js 中,我们可以看到 :

              

                buildUrl 一些关键代码如下 :

              

参考链接 :

 https://blog.csdn.net/qq_41499782/article/details/118916901
https://blog.csdn.net/qq_41499782/article/details/118916901

                 

https://segmentfault.com/q/1010000018679505?utm_source=sf-similar-question
https://segmentfault.com/q/1010000018679505?utm_source=sf-similar-question

                 

https://segmentfault.com/q/1010000040731240
https://segmentfault.com/q/1010000040731240

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值