在 Axios 请求头中添加信息
引言
Axios 是一个基于 Promise 的 HTTP 客户端,用于发送 HTTP 请求。在实际开发中,我们经常需要向请求头中添加一些信息,例如用户的身份信息、token 等。本文将介绍如何在 Axios 请求头中添加信息。
整体流程
下面是在 Axios 请求头中添加信息的整体流程:
步骤 | 描述 |
---|---|
1 | 创建 Axios 实例 |
2 | 设置请求拦截器 |
3 | 在拦截器中添加信息到请求头 |
4 | 发送请求 |
接下来,我们将逐步讲解每个步骤需要做什么,以及相应的代码示例。
步骤一:创建 Axios 实例
首先,我们需要创建一个 Axios 实例,用于发送 HTTP 请求。在创建实例时,我们可以设置一些默认配置,例如请求的基础URL、超时时间等。
// 导入 axios 模块
import axios from 'axios';
// 创建 Axios 实例
const instance = axios.create({
baseURL: ' // 设置请求的基础URL
timeout: 5000 // 设置请求超时时间为5秒
});
步骤二:设置请求拦截器
接下来,我们需要设置请求拦截器,用于在发送请求之前进行一些操作。其中,我们就可以在拦截器中添加信息到请求头。
// 设置请求拦截器
instance.interceptors.request.use(
config => {
// 在这里添加信息到请求头
config.headers['Authorization'] = 'Bearer your_token';
return config;
},
error => {
return Promise.reject(error);
}
);
在上述代码中,我们使用 instance.interceptors.request.use()
方法来设置请求拦截器。其中,config.headers['Authorization']
表示请求头中的 Authorization 字段,我们可以将用户的身份信息或 token 赋值给它。
步骤三:发送请求
现在,我们已经设置好了请求拦截器,可以向请求头中添加信息。接下来,我们就可以发送请求了。
// 发送 GET 请求
instance.get('/api/user')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
在上述代码中,我们使用 instance.get()
方法发送 GET 请求,并传入请求的 URL。在请求完成后,可以通过 response.data
获取到响应的数据。
类图
下面是本文介绍的相关类的类图:
classDiagram
class Axios {
<<interface>>
+get(url: string): Promise<any>
+post(url: string, data: any): Promise<any>
+put(url: string, data: any): Promise<any>
+delete(url: string): Promise<any>
}
class AxiosInstance {
+create(config?: AxiosRequestConfig): Axios
}
class AxiosInterceptorManager {
+use(resolved: ResolvedFn<T>, rejected: RejectedFn): number
+eject(id: number): void
}
class AxiosRequestConfig {
-url: string
-method: Method
-headers: any
-timeout: number
-baseURL: string
-transformRequest: AxiosTransformer | AxiosTransformer[]
-transformResponse: AxiosTransformer | AxiosTransformer[]
-params: any
-paramsSerializer: (params: any) => string
-data: any
-cancelToken: CancelToken
}
class AxiosResponse {
-data: any
-status: number
-statusText: string
-headers: any
-config: AxiosRequestConfig
-request: any
}
class AxiosError {
-message: string
-config: AxiosRequestConfig
-code?: string
-request?: any
-response?: AxiosResponse
-isAxiosError: boolean
}
class CancelToken {
<<interface>>
+source(): CancelTokenSource
}
class CancelTokenSource {
-token: CancelToken
-cancel: Canceler
}
interface AxiosTransformer {
(data: any, headers?: any): any
}
interface Canceler {
(message?: string): void
}
interface ResolvedFn<T = any> {
(val: T): T | Promise<T>
}
interface RejectedFn {
(error: any): any
}
Axios <|-- AxiosInstance