import { Config } from "./config.js"; import { Token } from "./token.js"; class Base { constructor() { this.baseRequestUrl = Config.userUrl; this.serviceRequestUrl = Config.serviceUrl; this.jgRequestUrl = Config.jgUrl; } // 文件上传 uploadFileByServer(params, noRefetch,name = "image") { var that = this; var url = this.serviceRequestUrl + params.url; if (!params.type) { params.type = "GET"; } if (params.queryString) { params.queryString = params.queryString; } else { params.queryString = ""; } uni.uploadFile({ url: url + params.queryString, filePath: params.filePath, name: name, header: { "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"), "content-type": "application/json" }, success: function(res) { if (res.data.code == "401") { //token过期 if (!noRefetch) { that._refetch(params); } } //根据http状态码判断本次http请求调用是否成功 var code = res.statusCode.toString(); var startChar = code.charAt(0); if (startChar == "2") { //http调用是成功的 params.sCallBack && params.sCallBack(res); } else { //处理请求错误 原因:token可能是失效的 //但是这种情况只能发生一次 if (code == "500") { //因为token失效服务器返回的状态码 //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验 if (!noRefetch) { that._refetch(params); } } params.sCallBack && params.sCallBack(res); } }, fail: function(err) { //网络中断或者网络异常导致的错误 console.log(err); console.log("服务器走神了..."); } }); } // 文件上传 uploadFile(params, noRefetch) { var that = this; var url = this.baseRequestUrl + params.url; if (!params.type) { params.type = "GET"; } if (params.queryString) { params.queryString = params.queryString; } else { params.queryString = ""; } uni.uploadFile({ url: url + params.queryString, filePath: params.filePath, name: "photo", header: { "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"), "content-type": "application/json" }, success: function(res) { if (res.data.code == "401") { //token过期 if (!noRefetch) { that._refetch(params); } } //根据http状态码判断本次http请求调用是否成功 var code = res.statusCode.toString(); var startChar = code.charAt(0); if (startChar == "2") { //http调用是成功的 params.sCallBack && params.sCallBack(res); } else { //处理请求错误 原因:token可能是失效的 //但是这种情况只能发生一次 if (code == "500") { //因为token失效服务器返回的状态码 //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验 if (!noRefetch) { that._refetch(params); } } params.sCallBack && params.sCallBack(res); } }, fail: function(err) { //网络中断或者网络异常导致的错误 console.log(err); console.log("服务器走神了..."); // reject(err); } }); } // 服务端请求 serviceRequest(params, noRefetch) { var that = this; var url = params.url.includes("http") ? params.url : (this.serviceRequestUrl + params.url); if (!params.type) { params.type = "GET"; } if (params.queryString) { params.queryString = params.queryString; } else { params.queryString = ""; } uni.request({ url: url + params.queryString, data: params.data, method: params.type, header: { "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"), "content-type": "application/json", ...params.header }, success: function(res) { if (res.data.code == "401") { console.log("登录过期"); // 过期跳转登录页 wx.redirectTo({ url: "/pages/login/index" }); //token过期 if (!noRefetch) { that._refetch(params); } } //根据http状态码判断本次http请求调用是否成功 var code = res.statusCode.toString(); var startChar = code.charAt(0); if (startChar == "2") { //http调用是成功的 params.sCallBack && params.sCallBack(res); } else { if (code == "500") { //因为token失效服务器返回的状态码 //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验 if (!noRefetch) { that._refetch(params); } } params.sCallBack && params.sCallBack(res); } }, fail: function(err) { //网络中断或者网络异常导致的错误 console.log(err); console.log("服务器走神了..."); } }); } //用户端请求 //当noRefetch为true时,不做未授权重制机制 request(params, noRefetch) { var that = this; var url = params.url.includes("http") ? params.url : (this.baseRequestUrl + params.url); if (!params.type) { params.type = "GET"; } if (params.queryString) { params.queryString = params.queryString; } else { params.queryString = ""; } uni.request({ url: url + params.queryString, data: params.data, method: params.type, header: { "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"), "content-type": "application/json", ...params.header }, success: function(res) { if (res.data.code == "401") { // 过期跳转登录页 wx.redirectTo({ url: "pages/login/index" }); //token过期 if (!noRefetch) { that._refetch(params); } } //根据http状态码判断本次http请求调用是否成功 var code = res.statusCode.toString(); var startChar = code.charAt(0); if (startChar == "2") { //http调用是成功的 params.sCallBack && params.sCallBack(res); } else { if (code == "500") { //因为token失效服务器返回的状态码 //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验 if (!noRefetch) { that._refetch(params); } } params.sCallBack && params.sCallBack(res); } }, fail: function(err) { //网络中断或者网络异常导致的错误 console.log(err); console.log("服务器走神了..."); } }); } jgRequest(params, noRefetch) { var that = this; var url = params.url.includes("http") ? params.url : (this.jgRequestUrl + params.url); if (!params.type) { params.type = "GET"; } if (params.queryString) { params.queryString = params.queryString; } else { params.queryString = ""; } uni.request({ url: url + params.queryString, data: params.data, method: params.type, header: { "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"), "content-type": "application/json", ...params.header }, success: function(res) { if (res.data.code == "401") { //token过期 if (!noRefetch) { that._refetch(params); } } //根据http状态码判断本次http请求调用是否成功 var code = res.statusCode.toString(); var startChar = code.charAt(0); if (startChar == "2") { //http调用是成功的 params.sCallBack && params.sCallBack(res.data); } else { if (code == "500") { //因为token失效服务器返回的状态码 //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验 if (!noRefetch) { that._refetch(params); } } params.sCallBack && params.sCallBack(res.data); } }, fail: function(err) { //网络中断或者网络异常导致的错误 console.log(err); console.log("服务器走神了..."); } }); } //token失效的时候,重新刷一下token _refetch(params) { var token = new Token(); token.getTokenFromServer((token) => { this.request(params, true); }); } } export { Base };