import axios from "axios" import qs from "qs" import Vue from "vue" const service = axios.create({ withCredentials: true, crossDomain: true, baseURL: Vue.prototype.$baseURL, //这个baseURL是我在main.js下配置的请求url timeout: 10000 }) // request拦截器,在请求之前做一些处理 service.interceptors.request.use( config => { const token = uni.getStorageSync('token'); if (token) { // 给请求头添加user-token config.headers["CreatorAuthorization"] = token; } config.headers['Content-Type'] = 'application/json' // config.method === 'post' ? // config.data = qs.stringify({ ...config.data // }) : // config.params = { ...config.params // }; return config; }, error => { console.log(error); // for debug return Promise.reject(error); } ); //配置成功后的拦截器 service.interceptors.response.use(res => { // return res if (res.data.code === 200) { return res } else if (res.data.code === 401) { uni.showModal({ content: '登录过期,请重新登录!', showCancel: false, success() { //没有缓存则跳转登录页面 uni.reLaunch({ url: '/pages/login/login' }); } }); } else { return Promise.reject(res.data.msg); } }, error => { return Promise.reject(error) }) axios.defaults.adapter = function(config) { //自己定义个适配器,用来适配uniapp的语法 return new Promise((resolve, reject) => { // console.log(config) var settle = require('axios/lib/core/settle'); var buildURL = require('axios/lib/helpers/buildURL'); uni.request({ method: config.method.toUpperCase(), url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer), header: config.headers, data: config.data, dataType: config.dataType, responseType: config.responseType, sslVerify: config.sslVerify, complete: function complete(response) { response = { data: response.data, status: response.statusCode, errMsg: response.errMsg, header: response.header, config: config }; settle(resolve, reject, response); } }) }) } export default service