目录
简介
Axios支持:XMLHttpRequests、node.js发送请求、Promisse、拦截请求和响应、转换请求和响应数据,用法有:
axios()
axios.request()
axios.get()
axios.delete()
axios.head()
axios.post()
axios.put()
axios.patch()
axios.all()
安装
npm install axios --save
返回效果
代码演示
import Vue from 'vue' import App from './App' import store from './store'
import axios from 'axios'
Vue.config.productionTip = false
/* 这里记得挂载store,否则this.$store失败,同时注意与import中大小写一致 */ new Vue({ el: '#app', store, render: h => h(App) })
axios.defaults.baseURL = 'http://123.207.32.32:8000'
axios({ // url: '/home/multidata' url: '/home/multidata', method: 'get', params: { type: 'pop', page: 1 } }).then(res => { console.log(res); });
axios.all( [ axios({url: '/home/multidata'}), axios({url: '/home/multidata'})]) .then(results => { console.log(results); console.log(results[1]); console.log(results[1]); }); |
全局配置
就是把公共配置抽取出来,这里可以看官网的说明,有很多选项的:
Axios实例
全局配置,就是所有Axios共享同一个配置,但在于某些模块里面,希望使用该模块独有的配置,到了其他模块再去使用其他模块独有的配置,此时就可以使用该特定:
const instance1 = axios.create({ baseURL: 'http://123.207.32.32:8000', timeout: 5000 });
instance1({ url: '/home/multidata' }) .then(res => { console.log(res); }); |
封装
建议只要是引用第三方组件,尽量避免在每个.Vue添加import依赖,否则后续改动,工作量很大的,鉴于此,可以使用这种思想来提供公共服务:
import Axios from "axios"; export function request(config) { // 创建axios实例 const instance = Axios.create({ baseURL: '', timeout: 5000 }); // 回调 return instance(config); // return new Promise((resolve, reject) => { // // 创建axios实例 // const instance = Axios.create({ // baseURL: '', // timeout: 5000 // }); // // 回调 // instance(config) // .then(res => resolve(res)) // .catch(err => reject(err)); // }); }
// 用的时候:request({}).then().catch(); |
拦截器
import Axios from "axios"; export function request(config) { // 创建axios实例 const instance = Axios.create({ baseURL: '', timeout: 5000 });
// axios实例拦截器,既有实例拦截器,也有全局拦截器 // 拦截请求 instance.interceptors.request.use( config => { console.log(config); // 这里要返回config对象 return config; }, err => { console.log(err)} );
// 响应拦截 instance.interceptors.response.use( resp => { console.log(resp.data); return resp.data; }, err => { console.log(err); } );
// 回调 return instance(config); // return new Promise((resolve, reject) => { // // 创建axios实例 // const instance = Axios.create({ // baseURL: '', // timeout: 5000 // }); // // 回调 // instance(config) // .then(res => resolve(res)) // .catch(err => reject(err)); // }); }
// 用的时候:request({}).then().catch(); |