react ts封装axios
时间: 2023-07-19 09:56:46 浏览: 124
小程序中axios的封装
好的,以下是一个简单的封装 axios 的 React TypeScript 代码示例:
```typescript
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
interface ResponseData {
code: number;
data: any;
message: string;
}
// 自定义错误类型
interface CustomError extends Error {
response?: AxiosResponse<ResponseData>;
}
const instance = axios.create({
baseURL: 'https://your-api-url.com',
timeout: 5000,
});
// 请求拦截器
instance.interceptors.request.use(
(config: AxiosRequestConfig) => {
// 在请求发送之前做一些处理
return config;
},
(error: CustomError) => {
// 处理请求错误
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
(response: AxiosResponse<ResponseData>) => {
// 对响应数据做一些处理
if (response.data.code !== 200) {
// 如果返回的数据中 code 不是 200,说明请求出错
const error: CustomError = new Error(response.data.message);
error.response = response;
throw error;
}
return response.data;
},
(error: CustomError) => {
// 处理响应错误
return Promise.reject(error);
}
);
export default instance;
```
这段代码中,我们首先定义了一个 `ResponseData` 接口,用于表示接口返回的数据格式。然后我们定义了一个 `CustomError` 接口,用于自定义错误类型,方便我们在拦截器中处理错误信息。接着我们创建了一个 axios 实例,并在实例中配置了一些基本信息,包括请求超时时间和请求的基础 URL。
接下来,我们定义了请求拦截器和响应拦截器。在请求拦截器中,我们可以对请求发送之前的一些处理,例如添加请求头或者对请求参数进行加密等。在响应拦截器中,我们可以对返回的数据进行处理,例如对错误码进行判断,或者对返回的数据进行格式化等。
最后,我们将我们封装好的 axios 实例导出,便于在项目中进行使用。
阅读全文