axios学习总结

218 阅读2分钟

首先安装npm: npm install axios

向 axios 传递相关配置来创建请求
//引入axios
import axios from 'axios';

// 发起一个post请求
axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' } });

// 发起一个 GET 请求 (默认请求方式) 
axios('/user/12345');

为了方便起见,已经为所有支持的请求方法提供了别名。

axios.request(config)

axios.get(url[, config])

axios.delete(url[, config])

axios.head(url[, config])

axios.options(url[, config])

axios.post(url[, data[, config]])

axios.put(url[, data[, config]])

axios.patch(url[, data[, config]])

起别名的方式创建请求(如果需要用到this,请使用箭头函数)
//get请求
axios.get('/user?ID=12345') //请求地址和参数
.then(function (response) { // 处理成功情况 console.log(response); }) 
.catch(function (error) { // 处理错误情况 console.log(error); })
.then(function () { // 总是会执行 });

axios.get('/user', { params: { ID: 12345 } }) //参数的另一种写法

//post请求
axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' }) //请求地址和参数
.then(function (response) { // 处理成功情况 console.log(response); }) 
.catch(function (error) { // 处理错误情况 console.log(error); });

//同时发起多个请求
function getUserAccount() { return axios.get('/user/12345'); } //声明一个返回get请求的函数
function getUserPermissions() { return axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' })} //声明一个返回post请求的函数
Promise.all([getUserAccount(), getUserPermissions()]) //发起多个请求
.then(function (results) { const acct = results[0]; const perm = results[1]; }); // 处理成功情况

全局 axios 默认值(适用于单个地址)
axios.defaults.baseURL = 'https://api.example.com'; 
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; 
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
自定义实例默认值(适用于多个地址)
const instance = axios.create({ baseURL: 'https://some-domain.com/api/', 
timeout: 1000, 
headers: {'X-Custom-Header': 'foobar'} });

以下是可用的实例方法。指定的配置将与实例的配置合并。
instance.request(config)

instance.get(url[, config])
 
instance.delete(url[, config])
 
instance.head(url[, config])

instance.options(url[, config])

instance.post(url[, data[, config]])
 
instance.put(url[, data[, config]])
 
instance.patch(url[, data[, config]])
拦截器

在请求或响应被 then 或 catch 处理前拦截它们。

// 添加请求拦截器 
axios.interceptors.request.use(
function (config) { // 在发送请求之前做些什么 return config; },
function (error) { // 对请求错误做些什么 return Promise.reject(error); }); 
// 添加响应拦截器 
axios.interceptors.response.use(
function (response) { // 2xx 范围内的状态码都会触发该函数。 
// 对响应数据做点什么 return response; }, 
function (error) { // 超出 2xx 范围的状态码都会触发该函数。
// 对响应错误做点什么 return Promise.reject(error); });
取消请求
let cancel; 
axios.get('/user/12345', { cancelToken: new axios.CancelToken(function executor(c) { 
// executor 函数接收一个 cancel 函数作为参数 cancel = c; }) }); 

// 取消请求 
cancel();