Promise风格的uni.request,超简洁,完整类型提示,泛型支持,完美兼容uni.request配置、前置处理,后置处理,中断请求,动态自定义配置,. . .
插件地址:ext.dcloud.net.cn/plugin?name…
// uts
import { request } from "@/uni_modules/u-req"
const baseUrl = "http://192.168.3.122:4523/m1/4254930-3896452-default"
// 自定义你的拦截器
// #ifdef APP-ANDROID
@UTSAndroid.keyword("inline")
@UTSAndroid.keyword("reified")
// #endif
async function post<T>(url : string, data ?: any) : Promise<RequestSuccess<T>> {
// try catch 块内任意位置都可以: throw new Error("抛出自定义错误")
try {
// 前置处理(如处理参数和配置)
const { result, task } = request<T>({// 支持所有 uni.request 的配置
url: `${baseUrl}/${url}`,
method: "POST",
data
} as RequestOptions<T>);
// task.abort() // 中断网络请求
const res = await result;
// 后置处理(如处理响应结果)
return res;
} catch (err : any) {
// 处理所有错误
// err.message!
throw err;
}
}
// 声明你的接口
// 注意服务器响应数据一定要和定义的响应类型一致否则会报错:error message invalid json
type login_res = { code : number, token : string, userName : string } // 响应类型建议从外部导入
export function login(data ?: any) { return post<login_res>("login", data) }
// 使用
login({ name: "test", pwd: "123456" })