UniApp——对uni.request()进行封装,实现拦截器和typescript支持
import { RequestTask, RequestParams } from 'uni-types';
export default class Http {
// 封装uni.request方法,支持拦截器和TypeScript
static request<T = any>(options: RequestParams): Promise<T> {
return new Promise((resolve, reject) => {
const task: RequestTask = uni.request({
...options,
success: (res) => {
// 请求成功拦截
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(res as any);
} else {
// 可以在这里处理错误码或状态码
reject(res);
}
},
fail: (err) => {
// 请求失败处理
reject(err);
},
complete: () => {
// 请求结束处理
}
});
// 中断请求
task.abort = () => {
task.abort();
};
});
}
}
// 使用封装后的Http类发起请求
Http.request({
url: 'https://example.com/api/data',
method: 'GET'
}).then(response => {
console.log(response.data);
}).catch(error => {
console.error(error);
});
这段代码定义了一个名为Http
的类,它有一个静态方法request
,该方法封装了uni.request
,并添加了TypeScript的类型支持。同时,它还支持请求成功和失败的拦截器,可以在请求成功时进行业务逻辑处理,或在请求失败时进行错误处理。最后,使用该类发起了一个GET请求。
评论已关闭