【经典】请求拦截,相应拦截vue3封装,使用dom封装typescript接口
在Vue 3中,可以通过自定义指令来封装请求拦截器和响应拦截器。以下是一个简单的示例,展示了如何使用TypeScript来封装这些拦截器。
首先,创建一个拦截器封装的TS文件,例如http.ts
:
import { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
// 请求拦截器
export const requestInterceptor = (config: AxiosRequestConfig) => {
// 在发送请求前做些什么,例如添加token或其他认证信息
// config.headers['Authorization'] = `Bearer yourToken`;
return config;
};
// 响应拦截器
export const responseInterceptor = (response: AxiosResponse) => {
// 对响应数据做处理
return response.data;
};
// 响应错误拦截器
export const errorInterceptor = (error: AxiosError) => {
// 对响应错误做处理
return Promise.reject(error);
};
然后,在Vue组件中使用这些拦截器:
<template>
<div>
<!-- 组件内容 -->
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import axios from 'axios';
import { requestInterceptor, responseInterceptor, errorInterceptor } from './http';
export default defineComponent({
name: 'YourComponent',
setup() {
// 添加请求拦截器
axios.interceptors.request.use(requestInterceptor);
// 添加响应拦截器
axios.interceptors.response.use(responseInterceptor, errorInterceptor);
// 发起请求的函数
const fetchData = async () => {
try {
const response = await axios.get('/api/data');
// 处理响应数据
} catch (error) {
// 处理错误
}
};
// 组件挂载时调用
fetchData();
}
});
</script>
在这个例子中,我们创建了一个简单的请求拦截器和响应拦截器,以及一个错误处理拦截器。在Vue组件中,我们使用axios.interceptors.request.use()
和axios.interceptors.response.use()
来添加这些拦截器,并在组件的setup
函数中发起请求。这样,我们就可以在一个地方管理所有的请求和响应逻辑,并在需要时在全局范围内应用它们。
评论已关闭