axios二次封装
import axios from 'axios'
import qs from 'qs'
import Vue from 'vue'
import store from '@/store'
// 创建axios对象
const http = axios.create({
baseURL: process.env.VUE_WEB_BASE_API, // 公共url
timeout: 1000 * 30,
withCredentials: true,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
})
/**
* 请求拦截
*/
http.interceptors.request.use(
(config) => {
if (Vue.$cookies.get('token')) {
config.headers['token'] = Vue.$cookies.get('token') // token
}
return config
},
(error) => {
return Promise.reject(error)
}
)
/**
* 响应拦截
*/
http.interceptors.response.use(response => {
if (response.data && response.data.code === '000000') {
return response
} else if (response.data && response.data.code === '268003') { // 999004,token失效
store.dispatch('user/userLogout')
window.$vue.$login.show()
}
return response
}, error => {
if (error.response && error.response.status && error.response.status === 401) {
store.dispatch('user/userLogout')
window.$vue.$login.show()
}
return Promise.reject(error)
})
/**
* 请求地址处理
* @param {*} actionName action方法名称
*/
http.adornUrl = (actionName) => {
return '/portalApi' + actionName
// return '/adminApi' + actionName
}
/**
* get请求参数处理
* @param {*} params 参数对象
* @param {*} openDefultParams 是否开启默认参数?
*/
http.adornParams = (params = {}, openDefultParams = true) => {
var defaults = {
t: new Date().getTime(),
}
return openDefultParams ? { ...defaults, ...params } : params
}
/**
* post请求数据处理
* @param {*} data 数据对象
* @param {*} openDefultdata 是否开启默认数据?
* @param {*} contentType 数据格式
* json: 'application/json; charset=utf-8'
* form: 'application/x-www-form-urlencoded; charset=utf-8'
*/
http.adornData = (data = {}, openDefultdata = true, contentType = 'json') => {
var defaults = {
t: new Date().getTime(),
}
data = openDefultdata ? { ...defaults, ...data } : data
return contentType === 'json' ? JSON.stringify(data) : qs.stringify(data)
}
export default http
使用
import http from '@/utils/httpRequest'
const versionC = 'v1'
const versionFun = 'v1.0.0'
// 获取首页信息
export function getHomePage (params) {
return http({
url: http.adornUrl(
`/geek-service/${versionC}/web/geek/getHomePage/${versionFun}`
),
method: 'get',
params: http.adornParams(params),
})
}