分享自己在项目中的网络请求的封装
目的:统一对api进行管理,方便维护。以后在更换请求库的时候可以很快的切换,不影响原来的接口逻辑
用到的请求库:axios
目录
request.js
manage.js
api.js
request.js
const service = axios.create({
baseURL: apiBaseUrl,
timeout: 90000
})
service.interceptors.request.use(config => {
console.log('config',config)
const token = Vue.ls.get(ACCESS_TOKEN)
if (token) {
config.headers['X-Access-Token'] = token
}
return config
}, (error) => {
return Promise.reject(error)
})
service.interceptors.response.use((response) => {
console.log('response',response)
return response.data
}, err)
const err = (error) => {
if (error.response) {
let data = error.response.data
const token = Vue.ls.get(ACCESS_TOKEN)
console.log("------异常响应------", token)
console.log("------异常响应------", error.response.status)
switch (error.response.status) {
case 403:
notification.error({ message: '系统提示', description: '拒绝访问', duration: 4 })
break
case 500:
console.log("------error.response------", error.response)
let type = error.response.request.responseType;
if (type === 'blob') {
break;
}
if (token && data.message.includes("Token失效")) {
}
break
case 404:
break
case 504:
break
case 401:
break
default:
break
}
}
return Promise.reject(error)
};
export {
service as axios
}
manage.js 封装方法
import { axios } from './request'
export function postAction(url,parameter) {
return axios({
url: url,
method:'post' ,
data: parameter,
headers: signHeader
})
}
export function putAction(url,parameter) {
return axios({
url: url,
method:'put',
data: parameter
})
}
export function getAction(url,parameter) {
return axios({
url: url,
method: 'get',
params: parameter,
headers: signHeader
})
}
export function deleteAction(url,parameter) {
return axios({
url: url,
method: 'delete',
params: parameter
})
}
api.js 所有请求方法
import { getAction, deleteAction, putAction, postAction} from './manage'
const addRole = (params)=>postAction("/sys/role/add",params);
导出
export {
addRole,
}
使用
在.vue文件中导入
import {addRole} from './api.js'