入门
快速使用
用npm安装axios插件
在需要使用的地方引入axios
import axios from 'axios'
|
基础的使用
axios({ url: 'http://httpbin.org/', methods:'get', success:function(){ }, params: { }, baseURL: 'http://www.baidu.com/api', headers:{ }, data:{ } })
|
axios可以使用Promise
axios({ url:'' }).then(res=>{ })
|
methods也可以用其他方式代替
axios.get({ }) axios.post({ })
|
axios会自动往返回值添加一些东西, 但是从服务器返回的数据都在data
里
并发请求
axios.all(axios(), axios()).then()
|
axios.all
方法会返回一个数组, 如果不想这样的话, 可以用axios.spread()
方法
axios.all(axios(), axios()).then(axios.spread(res1, res2 => { }))
|
JS特性:
可以用[]
括住的变量接收数组, 如:
>const names = ["Jam", "Tom", "Tick"]; >const [name1, name2, name3] = names;
|
全局变量
可以将在多个请求中都要使用到的变量保存到全局变量中
axios.defaults.baseURL = 'http://xxx.com' axios.defaults.timeout = 5000
|
axios封装
如上所用的都是全局的axios, 实际使用时往往会创建对应的axios实例
const instance = axios.create({ baseURL: 'http://xxx.com', timeout: 5000 })
intstance({ url: '/home', page: 1 })
|
为了代码的封装性和便于之后维护, 最好将axios封装一下
(在/src/network中进行相关网络请求的封装)
import axios from 'axios' export function request(config, success, failure){ const instance = axios.create({ baseURL: 'http://xxx.com', timeout: 5000 }) instance(config).then(res=>{ success(res); }) .catch(err=>{ failure(err); }) }
|
import request from '....' request({ url: '' },()=>{ },()=>{ } )
|
其实axios在
import axios from 'axios' export function request(config){ const instance = axios.create({ baseURL: 'http://xxx.com', timeout: 5000 }) instance(config.baseparams).then(res=>{ config.success(res); }).catch(res=>{ config.failure(res); }) }
|
import request from '....' request({ baseparams:{ }, success: function(res){ }, success: function(res){ } } )
|
可以封装一个Promise, 使得代码更清晰
import axios from 'axios' export function request(config){ return new Promise((resolve, reject)=>{ const instance = axios.create({ baseURL: 'http://xxx.com', timeout: 5000 })
instance(config.baseparams).then(res=>{ config.success(res); }).catch(res=>{ config.failure(res); }) }) }
|
import request from '....' request( { url:'xxx' } ).then(res=>{ }).catch(res=>{ })
|
axios本身的返回值就是Promise , 故不需要自己封装
import axios from 'axios' export function request(config){ const instance = axios.create({ baseURL: 'http://xxx.com', timeout: 5000 }) return instance(config) }
|
import request from '....' request( { url:'xxx' } ).then(res=>{ }).catch(res=>{ })
|
axios 拦截器
import axios from 'axios' export function request(config){ const instance = axios.create({ baseURL: 'http://xxx.com', timeout: 5000 }) instance.interceptors.request.use(config=>{ return config; }) instance.interceptors.response.use() return instance(config) }
|