Axios
# axios
请求库
# 安装
npm i axios -S
1
# 封装请求模块
为了方便,我们在这里把 axios 单独封装一个模块用于项目中的请求操作。
/**
* 基于 axios 封装的请求模块
*/
import axios from 'axios'
// axios()
// axios.get()
// axios.post()
// 创建一个 axios 实例,说白了就是复制了一个 axios
// 我们通过这个实例去发请求,把需要的配置配置给这个实例来处理
const request = axios.create({
baseURL: 'http://xx.xx.cn/' // 请求的基础路径
})
// 请求拦截器
// 响应拦截器
// 导出请求方法
export default request
// 谁要使用谁就加载 request 模块
// import request from 'request.js'
// request.xxx
// request({
// method: ,
// url: ''
// })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 使用拦截器统一设置用户 Token
axios 拦截器官方示例:https://github.com/axios/axios#interceptors
在 request 请求模块中添加如下代码:
// 请求拦截器
request.interceptors.request.use(
// 任何所有请求会经过这里
// config 是当前请求相关的配置信息对象
// config 是可以修改的
function (config) {
const user = JSON.parse(window.localStorage.getItem('user'))
// 如果有登录用户信息,则统一设置 token
if (user) {
config.headers.Authorization = `Bearer ${user.token}`
}
// 然后我们就可以在允许请求出去之前定制统一业务功能处理
// 例如:统一的设置 token
// 当这里 return config 之后请求在会真正的发出去
return config
},
// 请求失败,会经过这里
function (error) {
return Promise.reject(error)
}
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Last Updated: 2021/07/03, 20:49:24