如何检测 Axios 请求中的 401 错误
如果你是一名刚入行的开发者,遇到 API 请求时返回的 401 错误(未经授权)并不稀奇。本文将带你一步步了解如何使用 Axios 处理这些情况。我们将首先概览这个过程,然后一步步深入,提供每一步所需的代码及详细说明。
处理 401 错误的流程
下面是处理 Axios 请求并检测 401 错误的步骤概览:
步骤 | 描述 |
---|---|
步骤1 | 安装并配置 Axios。 |
步骤2 | 创建 Axios 实例并设置请求拦截器。 |
步骤3 | 创建响应拦截器以处理 401 错误。 |
步骤4 | 使用 Axios 发起请求并处理响应。 |
步骤详解
步骤1:安装并配置 Axios
首先,你需要在项目中安装 Axios。可以使用 npm 或 yarn 完成。
npm install axios
或使用 yarn:
yarn add axios
步骤2:创建 Axios 实例并设置请求拦截器
接下来,我们需要创建一个 Axios 实例,并添加请求拦截器。在请求拦截器中,我们可以为请求添加身份验证 token。
以下是代码示例:
import axios from 'axios';
// 创建一个 Axios 实例
const apiClient = axios.create({
baseURL: ' // API 基础 URL
timeout: 10000, // 请求超时时间(毫秒)
});
// 添加请求拦截器
apiClient.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token'); // 从 localStorage 获取 token
if (token) {
config.headers['Authorization'] = `Bearer ${token}`; // 将 token 添加到请求头
}
return config; // 返回配置以继续
},
(error) => {
return Promise.reject(error); // 返回错误信息
}
);
代码解释:
axios.create()
:创建一个新的 Axios 实例。interceptors.request.use()
:添加请求拦截器以处理请求配置。
步骤3:创建响应拦截器以处理 401 错误
我们需要使用响应拦截器来处理 401 错误的情况。这通常意味着用户需要重新登录。
// 添加响应拦截器
apiClient.interceptors.response.use(
(response) => {
return response; // 返回响应
},
(error) => {
// 检查是否是 401 错误
if (error.response && error.response.status === 401) {
console.error('未授权,请登录!'); // 控制台输出未授权信息
// 在这里可以进行重定向到登录页面等操作
}
return Promise.reject(error); // 返回错误,继续处置
}
);
代码解释:
interceptors.response.use()
:添加响应拦截器用于处理 API 返回的响应。error.response.status
:检查错误的状态码。
步骤4:使用 Axios 发起请求并处理响应
最后,我们可以使用刚才配置的 Axios 实例来发送请求,并处理返回的结果。
// 发起请求
async function fetchData() {
try {
const response = await apiClient.get('/data'); // 发送 GET 请求
console.log('请求成功,数据:', response.data); // 处理响应数据
} catch (error) {
console.error('请求失败:', error.message); // 处理请求错误
}
}
// 调用函数
fetchData();
代码解释:
apiClient.get('/data')
:使用 Axios 实例发起 GET 请求。console.log()
:输出请求成功或失败的信息。
流程序列图
下面是处理流程的序列图,能够让你清晰地看到每一步的关系。
sequenceDiagram
participant User
participant App
participant API
User->>App: 发起请求
App->>API: 发送请求
API-->>App: 返回响应
App->>User: 返回数据或错误信息
结尾
通过以上步骤,你已经成功设置了 Axios 实例,并实现了拦截器来处理 401 未授权错误。这不仅能帮助你跟踪 API 请求中的认证问题,还能提升你编写和维护代码的能力。记得在真实开发中妥善处理可能的错误,以提升用户体验。
希望这篇文章能帮助你更好地理解并实现 Axios 中的 401 错误处理。如果你有任何疑问,欢迎随时提问!祝你开发顺利!