fetch+typescript+fetch-intercept 封装
时间: 2023-07-25 22:34:30 浏览: 163
好的,下面是一个使用 TypeScript 和 fetch-intercept 封装 fetch 的示例代码:
```typescript
import fetchIntercept from 'fetch-intercept';
// 创建一个拦截器
const interceptor = fetchIntercept.register({
// 拦截器会接收到原始的 Request 对象,并可以对其进行修改
request: function (url, config) {
// 在请求头中添加 Authorization 属性
config.headers['Authorization'] = `Bearer ${localStorage.getItem('token')}`;
return [url, config];
},
});
// 封装 fetch 请求
export const request = async (url: string, options: RequestInit = {}): Promise<any> => {
try {
const response = await fetch(url, options);
if (!response.ok) {
throw new Error(`请求错误,状态码:${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error(error);
throw new Error('请求异常');
}
};
// 销毁拦截器
fetchIntercept.unregister(interceptor);
```
在这个示例代码中,我们首先使用 fetch-intercept 创建了一个拦截器,用来在请求头中添加 Authorization 属性。然后封装了一个 request 函数,使用 async/await 语法发送请求,并处理请求异常和响应数据。最后,在文件的最后销毁了拦截器,以免对其他模块造成影响。
你可以根据自己的需求修改这个示例代码,比如添加其他的拦截器、处理不同的请求方法等等。
阅读全文