75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
/**
|
||
* uni.request 封装 — 生产环境(服务器 172.16.0.198)
|
||
* 打包 APK 前:将 request.prod.js 重命名为 request.js 替换原文件
|
||
*/
|
||
|
||
const BASE_URL = "http://172.16.0.198:8011/api/v1";
|
||
|
||
export default function request(options) {
|
||
return new Promise((resolve, reject) => {
|
||
const url = options.url.startsWith("http") ? options.url : BASE_URL + options.url;
|
||
const token = uni.getStorageSync("token") || "";
|
||
|
||
uni.request({
|
||
url,
|
||
method: options.method || "GET",
|
||
data: options.data || {},
|
||
header: {
|
||
"Content-Type": "application/json",
|
||
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
||
...(options.header || {}),
|
||
},
|
||
timeout: 15000,
|
||
success(res) {
|
||
const code = res.statusCode;
|
||
if (code >= 200 && code < 300) {
|
||
resolve(res.data);
|
||
} else if (code === 401) {
|
||
uni.removeStorageSync("token");
|
||
uni.removeStorageSync("user");
|
||
uni.showToast({ title: "登录已过期,请重新登录", icon: "none" });
|
||
setTimeout(() => uni.reLaunch({ url: "/pages/login/login" }), 1000);
|
||
reject(res);
|
||
} else if (code === 403) {
|
||
uni.showToast({ title: res.data?.detail || "无权操作", icon: "none", duration: 3000 });
|
||
reject(res);
|
||
} else if (code === 400) {
|
||
uni.showToast({ title: res.data?.detail || "请求参数有误", icon: "none", duration: 2500 });
|
||
reject(res);
|
||
} else if (code === 409) {
|
||
uni.showToast({ title: res.data?.detail || "操作冲突", icon: "none", duration: 3000 });
|
||
reject(res);
|
||
} else {
|
||
const detail = res.data?.detail || "";
|
||
uni.showToast({ title: detail ? `${detail}` : `请求失败 (${code})`, icon: "none", duration: 3000 });
|
||
reject(res);
|
||
}
|
||
},
|
||
fail() {
|
||
uni.showToast({ title: "网络连接失败", icon: "none" });
|
||
reject(new Error("network"));
|
||
},
|
||
});
|
||
});
|
||
}
|
||
|
||
export function get(url, params = {}) {
|
||
const query = Object.entries(params)
|
||
.filter(([, v]) => v != null && v !== "")
|
||
.map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
|
||
.join("&");
|
||
return request({ url: query ? `${url}?${query}` : url, method: "GET" });
|
||
}
|
||
|
||
export function post(url, data = {}) {
|
||
return request({ url, method: "POST", data });
|
||
}
|
||
|
||
export function patch(url, data = {}) {
|
||
return request({ url, method: "PATCH", data });
|
||
}
|
||
|
||
export function put(url, data = {}) {
|
||
return request({ url, method: "PUT", data });
|
||
}
|