Axios

Axios:第三方 Ajax 库,是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。

安装:

  1. 利用 npm 安装:npm install axios --save
  2. 利用 cdn 引入:<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

创建请求:

可以通过 axios(config) 或者 axios(url, config) 来创建请求。

请求的配置参数 config:

只有 url 是必须的,如果 method 未定义,默认为 get。

  1. url:请求的服务器地址 。
  2. method:请求资源的方式 。
  3. baseURL:基础的服务器地址。如果 url 不是绝对地址,那么 baseURL 将会加到 url 的前面。
  4. params:通过请求头携带的数据。
  5. data:通过请求体携带的数据。
  6. headers:请求头信息 。
  7. withCredentials:表示跨域请求时是否需要使用凭证。
  8. timeout:超时时间。如果请求花费的时间超过了超时时间,那么请求会被终止。
//发送一个 GET 请求
axios('/user/1', {
   	 params: {
   	 	sex: 'man',
   	 },
}).then() 
//发送一个 POST 请求
axios('/user', {
   	 method: 'POST',
     // 此时 Content-Type 是 application/json
   	 data: {
      	 username: 'Lee',
         age: 18,
   	 },
   	 // data 也可以是下面的形式,此时 Content-Type 是 application/www-form-urlencoded
   	 // data: 'username=Lee&age=18'
}).then() 
//请求返回的内容
{
  data:{},
  status:200,
  statusText:'OK', 
  headers: {},  
  config: {},
  request: {},
}

可以通过 defaults 设置全局默认配置。对所有请求都有效。

配置具有优先级顺序:lib / defaults.js 中库的默认值 > defaults 属性 > 请求的 config 参数。

axios.defaults.baseURL = 'http://api.exmple.com'; 
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; 
axios.defaults.headers.post['content-Type'] = 'appliction/x-www-form-urlencoded';

请求方式的别名:

  1. axios.get():发送 get 请求。第一个参数是 url,第二个参数是配置信息。
    axios.get(
    	'/user',
    	{ params:{ id:1 } }, // 第二个参数用来传递配置信息
    ) 
    	.then(function(response){ console.log(response); }) 
    
  2. axios.post():发送 post 请求。第一个参数是 url,第二个参数是通过请求体携带的参数。
    axios.post(
    	'/user',
    	{username: 'Lee’, age: 18}, // 第二个参数用来传递要携带的数据,也可以使用 'username=Lee&age=18' 这种形式
    ) 
    	.then(function(response){ console.log(response); }) 
    
  3. axios.put():发送 put 请求。
  4. axios.delete();:发送 delete 请求。
  5. axios.request():发送 request 请求。
  6. axios.head():发送 head 请求。
  7. axios.patch():发送 patch 请求。
  8. axios.all(iterable)axios.spread(callback):一次性并发多个请求。
    function getUserAccount(){ 
    	return axios.get('/user/1');
     } 
    function getUserPermissions(){ 
    	return axios.get('/user/1/permissions'); 
    } 
    axios.all([getUserAccount(), getUserPermissions()])
     	.then(
     		axios.spread((account, permissions) => { 
     			//当两个请求都完成的时候会触发这个函数,两个参数分别代表返回的结果 
     		})
    	)
    

拦截器:

可以在请求之前或者返回的数据被 then、catch 处理之前进行拦截。

  1. 添加一个请求拦截器:
    //在请求发出之前进行一些操作
    axios.interceptors.request.use((config) => {
         return config; 
    },function(err){ 
    	 return Promise.reject(error);
     });
    
  2. 添加一个响应拦截器:
    // 在数据返回到  then、catch 方法之前进行处理 
    axios.interceptors.response.use(function(res){
       return res;
    },function(err){ 
       return Promise.reject(error);
    })
    
  3. 取消拦截器:
    var myInterceptor = axios.interceptors.request.use((){);
    axios.interceptors.request.eject(myInterceptor);
    

创建实例:

通过 axios.create() 创建一个 axios 实例,并且自定义其配置。

var instance = axios.create({
	 baseURL:"https://some-domain.com/api/",
	 timeout:1000,
     headers: {'X-Custom-Header':'foobar'}
});

instance.get();

Ajax 和 Axios:

Ajax:

本身是针对 MVC 的编程,不符合现在 MVVM 的浪潮;基于原生的 XHR 开发,XHR 本身的架构不清晰;单纯使用 Ajax 却要引入整个 Jquery。

Ajax 提交数据的时候,默认是以 FormData 的形式提交的,也就是 Content-Type:"application/x-www-form-urlencoded"

Axios:

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。具有以下特点:从浏览器中创建 XMLHttpRequest;从 node.js 创建 http 请求;支持 Promise API;拦截请求和响应;转换请求数据和响应数据;取消请求;自动转换JSON数据;客户端支持防御XSRF。

Axios 提交数据的时候,默认是以 Payload 形式提交数据,也就是 Content-Type:"application/json"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值