用ts二次封装axios
时间: 2023-09-07 18:18:10 浏览: 170
当然可以!以下是一个简单的 TypeScript 示例,用于二次封装 Axios:
```typescript
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
// 创建一个自定义的 Axios 实例
const api: AxiosInstance = axios.create({
baseURL: 'https://api.example.com', // 设置基础URL
timeout: 5000, // 设置请求超时时间
headers: {
'Content-Type': 'application/json', // 设置请求头
},
});
// 拦截请求
api.interceptors.request.use(
(config: AxiosRequestConfig) => {
// 在发送请求之前做些什么
// 可以在这里添加 token 等认证信息
return config;
},
(error: any) => {
// 对请求错误做些什么
return Promise.reject(error);
}
);
// 拦截响应
api.interceptors.response.use(
(response: AxiosResponse) => {
// 对响应数据做些什么
return response;
},
(error: any) => {
// 对响应错误做些什么
return Promise.reject(error);
}
);
export default api;
```
以上代码中,我们首先使用 `axios.create` 方法创建了一个自定义的 Axios 实例 `api`,可以根据需求设置 baseURL、超时时间、请求头等。
然后,我们使用 `api.interceptors.request.use` 和 `api.interceptors.response.use` 方法来拦截请求和响应。在这些拦截器中,你可以对请求进行处理,例如添加认证信息、对响应进行统一处理等。
最后,我们将 `api` 导出,这样其他模块就可以使用封装好的 Axios 实例来发送请求。
使用时只需导入该模块,然后使用 `api` 对象即可发送请求,例如:
```typescript
import api from './api';
api.get('/users')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
```
这只是一个简单的封装示例,你可以根据自己的需求进行扩展和修改。希望对你有帮助!
阅读全文