axios 使用指南

axios 分post 和 get请求

get 数据使用params 传递传递数据
post使用 data传递数据,使用params不会报错,但是数据在url上。

post传递数据的问题:

    数据问题是因为axios 默认是application/json,所以,如果后端解析json,那么就没有问题,比如@RequstBody,但是还是建议配置。因为一般使用的是application/x-www-form-urlencoded
    解决办法使用axios 自带的请求处理配置,具体实现参考后文,这个方法返回的字符串会原文写入请求体,符合格式就可以。为了验证,手写了一个文件上传,用下面的方法实现,参考其它博文。

 transformRequest: [function (data) {return }] //记得对key 和 value 要encodeurl

    比如默认json,请求体如下

{a:b}

    application/x-www-form-urlencoded格式请求体如下

a=b

解决方法

①数组格式问题,格式不对,如果传递数组,添加配置,qs为axios自带,直接导入即可,后面方法都能解决

 paramsSerializer: datas => {
     return qs.stringify(datas, { indices: false })
                        },

②普通数据格式问题(注:post请求必须如下配置),一般表现为后端获取不到数据。f12发现格式不对,reploy而不是formdata,即使是formdata 格式也不对。
解决办法如下(选择一种即可):

1、使用FromData对象,FromData的append 添加数据。再直接传递给data

data:fromData

2、参考某位大神的博客,添加配置

 transformRequest: [function (data) {
                   // Do whatever you want to transform the data
                   let ret = ''
                   for (let it in data) {
                       ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
                   }
                   return ret
               }],

3、其它如FromData 一样的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值