uniapp ts vue3封装请求
时间: 2023-11-11 08:07:20 浏览: 112
以下是一个基于uniapp、typescript和vue3的封装请求的示例:
1. 安装axios和qs:
```
npm install axios qs --save
```
2. 创建一个request.ts文件,用于封装请求:
```typescript
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
import qs from 'qs';
// 创建一个axios实例
const instance: AxiosInstance = axios.create({
baseURL: 'https://api.example.com',
timeout: 10000,
headers: {
'Content-Type': 'application/json'
}
});
// 请求拦截器
instance.interceptors.request.use(
(config: AxiosRequestConfig) => {
// 在请求发送之前做些什么
// 添加token等
return config;
},
(error) => {
// 对请求错误做些什么
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
(response: AxiosResponse) => {
// 对响应数据做些什么
return response;
},
(error) => {
// 对响应错误做些什么
return Promise.reject(error);
}
);
// 封装请求方法
const request = {
get(url: string, params?: any) {
return instance.get(url, { params });
},
post(url: string, data?: any) {
return instance.post(url, qs.stringify(data));
},
put(url: string, data?: any) {
return instance.put(url, qs.stringify(data));
},
delete(url: string, params?: any) {
return instance.delete(url, { params });
}
};
export default request;
```
3. 在需要使用请求的组件中引入request.ts,并发送请求:
```typescript
import request from '@/utils/request';
export default {
methods: {
async fetchData() {
try {
const response = await request.get('/data', { page: 1, limit: 10 });
console.log(response.data);
} catch (error) {
console.log(error);
}
}
}
};
```
这样就完成了一个简单的请求封装。你可以根据自己的需求进行修改和扩展。
阅读全文