返回
Vue-Element-Admin 网络请求封装剖析
前端
2024-01-12 18:44:38
网络请求是 Vue-Element-Admin 中必不可少的环节,它负责与后端服务器进行数据交互。为了使网络请求更加方便和高效,Vue-Element-Admin 对网络请求进行了封装,提供了统一的接口和配置。
Vue-Element-Admin 的网络请求封装主要基于 axios 库。axios 是一个功能强大的 JavaScript HTTP 库,它提供了简单易用的 API,可以轻松地进行各种 HTTP 请求。
**网络请求封装的整体思路如下:**
1. 创建 axios 实例
2. 添加请求和响应拦截器
3. 导出实例
**1. 创建 axios 实例**
Vue-Element-Admin 在 `src/utils/request.js` 文件中创建了一个 axios 实例。实例的创建代码如下:
```javascript
import axios from 'axios'
const instance = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 60000
})
在创建实例时,需要指定一些基本配置,包括:
baseURL
:后端服务器的基准 URL。timeout
:请求超时时间,单位为毫秒。
2. 添加请求和响应拦截器
Vue-Element-Admin 在创建 axios 实例后,添加了请求和响应拦截器。请求拦截器的目的是在发出请求之前对请求进行处理,响应拦截器的目的是在收到响应之后对响应进行处理。
请求拦截器的代码如下:
instance.interceptors.request.use(
config => {
// 为请求头添加 token 信息
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
},
error => {
// 处理请求错误
return Promise.reject(error)
}
)
请求拦截器的主要功能就是为请求加上 token 信息。token 是用户登录后获得的令牌,用于验证用户的身份。在发出请求之前,需要将 token 添加到请求头中,这样才能访问受保护的资源。
响应拦截器的代码如下:
instance.interceptors.response.use(
response => {
// 处理响应数据
return response.data
},
error => {
// 处理响应错误
return Promise.reject(error)
}
)
响应拦截器的主要功能则是做各种错误处理。当收到响应后,需要检查响应的状态码,如果状态码不为 200,则认为请求失败,需要抛出错误。
3. 导出实例
Vue-Element-Admin 在创建 axios 实例并添加了请求和响应拦截器之后,将其导出,以便其他模块可以使用。导出代码如下:
export default instance
如何使用封装好的网络请求
其他模块可以使用导入的 axios 实例来进行网络请求。例如,在 src/views/user/index.vue
文件中,有一个获取用户列表的函数,代码如下:
import request from '@/utils/request'
export default {
name: 'UserList',
data() {
return {
users: []
}
},
created() {
this.fetchUsers()
},
methods: {
fetchUsers() {
request({
url: '/users',
method: 'get'
}).then(res => {
this.users = res.data
})
}
}
}
在函数中,使用了 request
函数来发送请求。request
函数接受一个参数,参数是一个对象,对象中包含了请求的 URL、方法等信息。当请求完成后,request
函数会返回一个 Promise 对象,Promise 对象中包含了响应的数据。
总结
Vue-Element-Admin 的网络请求封装非常方便和高效,它使我们可以轻松地进行各种 HTTP 请求。通过本文的分析,读者可以更深入地理解 Vue-Element-Admin 的网络请求机制,并将其应用到自己的项目中。