import $store from "@/store/index"; import Vue from "vue" let prototype = Vue.prototype; function findRule(name) { let pos = name.indexOf('.'); if (pos > 0) { let temp, arr = name.split('.'); for (let i = 0; i < arr.length; i++) { if (i == 0) { temp = prototype.$apis[arr[i]] || {}; } else { temp = temp[arr[i]] || {}; } } return temp; } return name; } const request = async (args) => { let rule = findRule(args.api || {}); if (JSON.stringify(rule) === "{}") { throw "找不到API:" + args.api; } if (rule.auth && !$store.state.user.token) { $store.commit("user/showLoginModal", true); return; } const headers = { "XX-Wxapp-AppId": prototype.$config.appId, 'XX-Token': $store.state.user.token, 'XX-Device-Type': 'wxapp', }; const [error, response] = await uni.request({ url: prototype.$config.root + rule.url, method: rule.method || 'get', data: args.data, header: { 'X-Requested-With': 'XMLHttpRequest', 'content-type': 'application/x-www-form-urlencoded', ...headers } }); return Promise.resolve(response.data); }; export default request