Skip to main content

异步处理:如何向服务器端发送请求?

实现自己的 API Client

无论大小项目,在开始实现第一个请求的时候,通常我们要做的第一件事应该都是创建一个自己的 API Client,之后所有的请求都会通过这个 Client 发出去。

实现这样一个 API Client 需要考虑哪些因素。

通常来说,会包括以下几个方面:

  1. 一些通用的 Header。比如 Authorization Token。

  2. 服务器地址的配置。前端在开发和运行时可能会连接不同的服务器,比如本地服务器或者测试服务器,此时这个 API Client 内部可以根据当前环境判断该连接哪个 URL。

  3. 请求未认证的处理。比如如果 Token 过期了,需要有一个统一的地方进行处理,这时就会弹出对话框提示用户重新登录。

import axios from "axios";

// 定义相关的 endpoint
const endPoints = {
test: "https://60b2643d62ab150017ae21de.mockapi.io/",
prod: "https://prod.myapi.io/",
staging: "https://staging.myapi.io/"
};

// 创建 axios 的实例
const instance = axios.create({
// 实际项目中根据当前环境设置 baseURL
baseURL: endPoints.test,
timeout: 30000,
// 为所有请求设置通用的 header
headers: { Authorization: "Bear mytoken" }
});

// 听过 axios 定义拦截器预处理所有请求
instance.interceptors.response.use(
res => {
// 可以假如请求成功的逻辑,比如 log
return res;
},
err => {
if (err.response.status === 403) {
// 统一处理未授权请求,跳转到登录界面
document.location = "/login";
}
return Promise.reject(err);
}
);

export default instance;