gy-app-shop/common/api/request.js

164 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import store from '@/store'
//H5版本
// #ifdef H5
import Fly from 'flyio/dist/npm/fly'
// #endif
//微信小程序和APP版本
// #ifndef H5
import Fly from 'flyio/dist/npm/wx'
// #endif
const request = new Fly();
import config from "./config.js"
//请求拦截
request.interceptors.request.use((request) => {
// uni.showLoading({
// title: '努力加载中...'
// });
request.baseURL = config.baseUrl;
const userToken = uni.getStorageSync('userToken');
if(userToken){
request.headers["Authorization"] = userToken;
}
// 防止缓存
if (request.method === 'POST' && request.headers['Content-Type'] !== 'multipart/form-data') {
request.body = {
...request.body,
_t: Date.parse(new Date()) / 1000
}
} else if (request.method === 'GET') {
request.params = {
_t: Date.parse(new Date()) / 1000,
...request.params
}
}
return request
})
//响应拦截
request.interceptors.response.use(function(response) { //不要使用箭头函数否则调用this.lock()时this指向不对
let errmsg = '';
const data = response.data;
if (!data || typeof data !== 'object') {
errmsg = '服务器响应格式错误';
uni.showToast({
title: errmsg,
icon: 'none'
})
} else {
const code = data.code;
let msg = "";
if(code != 200){
console.log('data.msg: ', data.msg)
uni.showToast({
title: data.msg,
duration: 3000,
icon: 'none'
})
if(code == 401){
try{
store.commit('logout');
uni.reLaunch({
url: '/pages/auth/login'
})
} catch(err) {
console.log(err);
}
}
}
}
uni.hideLoading();
return data; // 只返回业务数据部分
}, function(err) {
// console.log("error-interceptor:" + JSON.stringify(err))
let errmsg = err.message;
switch (err.status) {
case 0:
errmsg = "网络连接错误";
uni.showToast({
title: errmsg,
icon: 'none'
})
break;
case 401:
store.commit('logout');
uni.reLaunch({
url: '/pages/auth/login'
})
break;
default:
uni.showToast({
title: errmsg,
icon: 'none'
})
}
})
/**
* 封装post方法
* @param url
* @param data
* @returns {Promise}
*/
export function post(url, params) {
return new Promise((resolve, reject) => {
request.post(url, params)
.then(response => {
resolve(response);
}, err => {
reject(err);
})
.catch((error) => {
reject(error)
})
})
}
export function get(url, params) {
return new Promise((resolve, reject) => {
request.get(url, params)
.then(response => {
resolve(response);
}, err => {
reject(err);
})
.catch((error) => {
reject(error)
})
})
}
export function DELETE(url, params) {
return new Promise((resolve, reject) => {
request.delete(url, params)
.then(response => {
resolve(response);
}, err => {
reject(err);
})
.catch((error) => {
reject(error)
})
})
}
export function put(url, params) {
return new Promise((resolve, reject) => {
request.put(url, params)
.then(response => {
resolve(response);
}, err => {
reject(err);
})
.catch((error) => {
reject(error)
})
})
}
// export default request