ajax.js
import axios from 'axios'
import router from './router'
axios.defaults.headers = {
}
axios.defaults.timeout = 10000
axios.defaults.withCredentials = true
export const ajax = function (obj) {
let { base, url, method = 'GET', params, data } = obj
let baseURL = ''
if (process.env.NODE_ENV == 'production') {
if (base == '/zw') {
baseURL = 'http://zuowen.api.juhe.cn'
} else {
baseURL = 'http://apis.juhe.cn'
}
} else {
baseURL = base || '/api'
}
return axios({
baseURL: baseURL,
url: url,
method: method,
params: method == 'GET' ? params : null,
data: ['POST', 'PUT', 'PATCH'].includes(method) ? data : null,
})
}
export const ajaxAll = function (arr) {
return axios.all(arr)
}
axios.interceptors.request.use(config => {
return config
}, err => {
return Promise.reject(err)
})
axios.interceptors.response.use(res => {
if (res.status == 200) {
return Promise.resolve(res.data)
} else {
return Promise.reject(res)
}
}, err => {
if (err.response.status) {
switch (err.response.status) {
case xxx:
console.log(router.currentRoute.fullPath, router.currentRoute)
router.replace({
path: '/login',
query: { redirect: router.currentRoute.fullPath }
})
break
case 404:
break
case 500:
break
}
return Promise.reject(err.response)
}
})
使用
import { ajax, ajaxAll } from '@/ajax'
export default {
mounted () {
ajax({
base: '/zw',
url: `/zuowen/typeList?key=ae9e86299296235771c5a80cf220c5bb&id=1`,
}).then(res => {
console.log(res)
})
ajaxAll([
ajax({ url: `/simpleWeather/query?city=上海&key=17c7745ae93a8565f34eedcc85b84069` }),
ajax({
base: '/zw',
url: `/zuowen/typeList?key=ae9e86299296235771c5a80cf220c5bb&id=1`,
})
]).then(res => {
console.log(res)
})
}
}
vue.config.js
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://apis.juhe.cn',
pathRewrite: { '^/api' : '/' },
ws: true,
changeOrigin: true
},
'/zw': {
target: 'http://zuowen.api.juhe.cn',
pathRewrite: { '^/zw' : '/' },
ws: true,
changeOrigin: true
}
}
},
publicPath: '/' // 设置打包文件相对路径
}
router.js
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'index',
}
]
})