axios参见传参方式

由于axios中包含es6的语法,需要支持ES6 Promise实现。 如果您的环境不支持ES6 Promise,您可以使用polyfill。

(可以使用 import "babel-polyfill" )

 

axios的官方API  地址

 

以下是axios官方api中描述不完整的地方:

开发过程中,经常需要全局设置,许多前端开发时容易忽略请求头的配置,常用的请求头有2种:


 
 
  1. axios.defaults.timeout = 15000; //超时响应
  2. axios.defaults.headers.post[ 'Content-Type'] = 'application/x-www-form-urlencoded'; // 配置请求头(推荐)
  3. // axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8'; // 配置请求头
  4. axios.defaults.baseURL = $core.use( 'http'); //确认协议和地址
  5. axios.defaults.withCredentials = true; // axios 默认不发送cookie,需要全局设置true发送cookie

 在这里我推荐全局请求头headers中Content-Type使用:

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

为什么?我在下面解释

1:get请求

axios中常见的get/delete请求,也称作query请求:

一般发送请求是这么写(不推荐):


 
 
  1. axios.get( '/user?id=12345&name=user')
  2. .then( function (res) {
  3. console.log(res);
  4. }).catch( function (err) {
  5. console.log(err);
  6. });

但是为了方便全局统一调用封装的axios,我一般采用(推荐)


 
 
  1. axios.get( '/user', { //params参数必写 , 如果没有参数传{}也可以
  2. params: {
  3. id: 12345
  4. name: user
  5. }
  6. })
  7. .then( function (res) {
  8. console.log(res);
  9. })
  10. .catch( function (err) {
  11. console.log(err);
  12. });

 

2.post/put/patch请求

传参方式大致用的有3种

(1) 传参格式为 formData 

(全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')

(request的Header:'Content-Type'= 'multipart/form-data')


 
 
  1. var formData= new FormData();
  2. formData.append( 'user', 123456);
  3. formData.append( 'pass', 12345678);
  4. axios.post( "/notice",formData)
  5.   .then( (res) => { return res})
  6. .catch( (err) => { return err})

 

(2) 传参格式为 query 形式  

(全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')

(request的Header:'Content-Type'= 'application/x-www-form-urlencoded')

第一种情况:使用$qs.stringify


 
 
  1. import Qs from 'qs' //引入方式
  2. Vue.prototype.$qs = Qs //全局加载
  3. this.$qs.stringify(data); //使用方式
  4. this.$qs.parse(data); //使用方式
  5. var readyData= this.$qs.stringify({
  6. id: 1234,
  7. name:user
  8. });
  9. axios.post( "/notice",readyData)
  10.      .then( (res) => { return res})
  11.      .catch( (err) => { return err})

第二种情况:使用URLSearchParams

在浏览器中,您可以使用URLSearchParams API,如下所示:


 
 
  1. var params = new URLSearchParams();
  2. params.append( 'param1', 'value1');
  3. params.append( 'param2', 'value2');
  4. axios.post( '/foo', params);

请注意,所有浏览器都不支持URLSearchParams,但是有一个polyfill可用(确保polyfill全局环境)。

 

(3) 传参格式为 raw (JSON格式) 

  第一种情况: axios将JavaScript对象序列化为JSON

(全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')

(request的Header:'Content-Type'= 'application/json;charset=UTF-8')


 
 
  1. var readyData={
  2. id: 1234,
  3. name:user
  4. };
  5. axios.post( "/notice",readyData)
  6.      .then( (res) => { return res})
  7.      .catch( (err) => { return err})

  第二种情况:

(全局请求头:‘Content-Type'= 'application/json;charset=UTF-8')

(request的Header:‘Content-Type'= 'application/json;charset=UTF-8')


 
 
  1. var readyData= JSON.stringify({
  2. id: 1234,
  3. name:user
  4. });
  5. axios.post( "/notice",readyData)
  6.      .then( (res) => { return res})
  7.      .catch( (err) => { return err})

 

转自:https://blog.csdn.net/qq_31837621/article/details/80688854

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值