88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
|
/**
|
|||
|
* 请求封装库
|
|||
|
*/
|
|||
|
import Vue from 'vue';
|
|||
|
|
|||
|
import axios from '../uni_modules/axios/index.js';
|
|||
|
|
|||
|
import configs from './config.js';
|
|||
|
|
|||
|
import api from './api.js';
|
|||
|
|
|||
|
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'; //application/json;charset=utf-8';
|
|||
|
const service = axios.create({
|
|||
|
baseURL: configs.base_url,
|
|||
|
timeout: configs.timeout,
|
|||
|
})
|
|||
|
|
|||
|
// 请求拦截
|
|||
|
service.interceptors.request.use(config => {
|
|||
|
config.headers['brand-key'] = configs.brand_key || '';
|
|||
|
// 非登录接口添加token
|
|||
|
if (config["url"].indexOf("login") < 0) {
|
|||
|
config.headers['token'] = api.getCache('token') || '';
|
|||
|
}
|
|||
|
return config;
|
|||
|
},
|
|||
|
error => {
|
|||
|
return Promise.reject(error);
|
|||
|
});
|
|||
|
|
|||
|
// 响应拦截
|
|||
|
service.interceptors.response.use(res => {
|
|||
|
if (res.status == 200) {
|
|||
|
// 请求成功后设置token
|
|||
|
if (res.data.code == 1 && res.config.url.indexOf("login/registerLogin") > -1 && res.data.token) {
|
|||
|
api.setCache('token', res.data.token)
|
|||
|
}
|
|||
|
return res.data;
|
|||
|
} else {
|
|||
|
return Promise.reject(res.data.msg || '');
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
// 自定义适配器 , 适配uniapp语法
|
|||
|
axios.defaults.adapter = function(config) {
|
|||
|
return new Promise((resolve, reject) => {
|
|||
|
let settle = require('../uni_modules/axios/lib/core/settle');
|
|||
|
let buildURL = require('../uni_modules/axios/lib/helpers/buildURL');
|
|||
|
let buildFullPath = require('../uni_modules/axios/lib/core/buildFullPath');
|
|||
|
let fullurl = buildFullPath(config.baseURL, config.url);
|
|||
|
api.showBarLoading();
|
|||
|
uni.request({
|
|||
|
method: config.method.toUpperCase(),
|
|||
|
url: buildURL(fullurl, config.params, config.paramsSerializer),
|
|||
|
timeout: config.timeout || 0,
|
|||
|
header: config.headers,
|
|||
|
data: typeof config.data === 'object' ? JSON.stringify(config.data) : (config.data ?
|
|||
|
JSON.parse(config.data) : ''),
|
|||
|
dataType: config.dataType || 'JSON',
|
|||
|
responseType: config.responseType || 'text',
|
|||
|
sslVerify: config.sslVerify || true,
|
|||
|
complete: function complete(response) {
|
|||
|
response = {
|
|||
|
data: response.data,
|
|||
|
status: response.statusCode,
|
|||
|
errMsg: response.errMsg,
|
|||
|
header: response.header,
|
|||
|
config: config
|
|||
|
};
|
|||
|
api.hideBarLoading();
|
|||
|
if (response.status == 401) {
|
|||
|
api.modal('温馨提示', '请登录后再操作', function() {
|
|||
|
api.clearCache();
|
|||
|
api.reLaunch("/pages/mine/mine");
|
|||
|
}, false)
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (response.status == 500) {
|
|||
|
console.log('requestError','网络错误');
|
|||
|
}
|
|||
|
settle(resolve, reject, response);
|
|||
|
},
|
|||
|
});
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
export default service
|