JavaW的技术专栏 A CSU coder

【个人总结】Vue axios详解总结

2021-10-26


Axios是什么

为什么要引入Ajax

为了解决浏览器在每次向服务器请求数据的时候,服务器都需要返回整个界面的数据这一个问题。产生了Ajax异步网络请求。

  • Ajax(Asynchronous JavaScript and XML):异步网络请求
  • Ajax能够让页面无刷新的请求数据

实现Ajax的方法

  • jQuery封装的ajax(引入jQuery小题大做)
  • 原生的XMLHttpRequest(调用和配置比较繁琐)
  • Axios(better)

Axios简介

这并不是一种全新的技术,本质上是对原生XMLHttpRequest的封装,并且基于Promise以及符合全新的ES规范使其可以更便捷的进行Ajax请求

可用于nodejs的HTTP客户端和浏览器

Axios的请求方式

请求的发送

执行get请求

import axios from 'axios'
axios.default.baseURL = 'http://localhost:3000/api/products'
axios.get('/user?ID=12345')  //返回的是一个Promise
    .then(res=>console.log(res))
    .catch(err=>console.log(err));

//可配置参数的方式
axios.get('/user',{
    params:{
        ID:12345
    }
}).then(res=>console.log(res))
    .catch(err=>console.log(err));

发送post请求

axios.post('/user',{
    firstName: 'simon',
    lastName:'li'
}).then(res=>console.log(res))
    .catch(err=>console.log(err));

发送并发请求,只要其中一个请求出错,就会停止请求

const get1 = axios.get('/user/12345');
const get2 = axios.get('/user/12345/permission');
axios.all([get1,get2])
    .then(axios.spread((res1,res2)=>{
    	console.log(res1,res2);
	}))
    .catch(err=>console.log(err))

请求的响应(返回)

{
    //data是服务器提供的响应
    data:{},
    
    //服务器返回的http状态码   
    status: 200,
     
    //statusText是服务器返回的http状态信息
    statusText: 'ok',
        
    //heades是服务器响应中携带的headers
    headers:{},
    
    //config是axios进行的设置,目的是为了请求(request)
    config:{}, 
}

//使用then后,response中将包含上述信息
axios.get('/user/12345').then(response={
    console.log(response.data);
    console.log(response.status);
    console.log(response.statusText);
    console.log(response.headers);
    console.log(response.config);
})

请求的拦截

拦截器:可以对数据进行一些处理和过滤,但都是一些基本的判断

  • 请求拦截
//添加一个请求拦截器
axios.interceptors.request.use(config=>{
    //在请求之前做一些事
    return config;
},err=>{
   //请求错误的时候做一些事
    return Promise.reject(err);
});
  • 响应拦截
//添加一个响应拦截器
axios.interceptors.response.use(response=>{
    //对返回的数据做一些处理
    reutrn response;
},err=>{
   //对返回的错误做一些处理
    return Promise.reject(err);
});

其中:

请求拦截的错误拦截较少,请求拦截多为配置的拦截

响应拦截,成功一般是对数据的处理,失败一般是根据错误码跳转到提示界面

更多细节详见axios-js


Similar Posts

Comments