1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import Request from './request';
- import apiList from './api.js'
- const shoproRequest = new Request();
- export default function http(url,
- data = {},
- toastBefore = '', // 请求前加载提示
- toastAfter = true, // 请求后错误提示
- ) {
- let api = getApiPath(url);
- /* 请求之前拦截器 */
- shoproRequest.interceptor.request((config, cancel) => {
- let token = uni.getStorageSync('token') || "";
- if (api.auth && !token) {
- uni.hideLoading();
- uni.showToast({
- title: '暂未登录,请先登录',
- icon: 'none',
- duration: 2000,
- });
- uni.navigateTo({
- url: '/pages/login/index',
- success: function(res) {}
- });
- throw (`暂未登录,已阻止此次API请求: '${api.url}'`);
- }
- token && shoproRequest.setConfig(config => {
- config.header.Authorization = token
- })
- if (toastBefore !== '') {
- uni.showLoading({
- title: toastBefore,
- mask: true
- });
- }
- return config
- });
- /* 请求之后拦截器 */
- shoproRequest.interceptor.response((response) => {
- uni.hideLoading();
- if (response.code != 0 || response.success === false) {
- if (toastAfter) {
- uni.showToast({
- title: response.message || '请求出错,稍后重试',
- icon: 'none',
- duration: 1000,
- mask: true
- });
- }
- // token过期注销
- if (response.code === 161099) {
- if (response.message == '当前登录已失效,请重新登录') {
- uni.navigateTo({
- url: '/pages/login/index',
- success: function(res) {}
- });
- uni.removeStorageSync('token');
- } else {
- uni.showToast({
- title: response.message,
- icon: 'none',
- });
- }
- throw (`登录已过期或注销,已阻止请求: '${api.url}'`);
- }
- }
- return response
- })
- return shoproRequest.request({
- url: api.url || url,
- data,
- method: api.method
- })
- }
- // 组装接口路径
- function getApiPath(url) {
- let api;
- let apiArray = url.split(".");
- if (apiArray.length == 1) {
- api = {
- auth: true,
- method: "POST",
- url: url,
- }
- } else {
- api = apiList;
- apiArray.forEach(v => {
- api = api[v];
- });
- }
- return api;
- }
|