parent
02fcf492b9
commit
2f27556b61
7 changed files with 191 additions and 5 deletions
@ -0,0 +1,10 @@ |
||||
export default { |
||||
method: 'get', |
||||
baseURL: 'http://localhost:8001', |
||||
headers: { |
||||
'Content-Type': 'application/json;charset=UTF-8' |
||||
}, |
||||
timeout: 10000, |
||||
withCredentials: true, |
||||
responseType: 'json', |
||||
} |
@ -0,0 +1,111 @@ |
||||
import axios from "axios"; |
||||
import config from "@/request/config.js"; |
||||
import router from "@/router"; |
||||
import { ElMessage } from 'element-plus'; |
||||
|
||||
export default function request(options) { |
||||
return new Promise((resolve, reject) => { |
||||
const instance = axios.create({...config}); |
||||
// 请求拦截器
|
||||
instance.interceptors.request.use( |
||||
(config) => { |
||||
let token = localStorage.getItem('pm_token'); |
||||
if (token) { |
||||
config.headers.token = token; |
||||
|
||||
} else { |
||||
router.push('/update') |
||||
} |
||||
return config; |
||||
}, |
||||
(error) => { |
||||
console.log("request:", error); |
||||
if (error.code === "ECONNABORTED" && error.message.indexOf("timeout") !== -1) { |
||||
ElMessage({message: "请求超时", type: "error", showClose: true}); |
||||
} |
||||
return Promise.reject(error) |
||||
} |
||||
); |
||||
// 响应拦截器
|
||||
instance.interceptors.response.use( |
||||
(response) => { |
||||
return response.data; |
||||
}, |
||||
(err) => { |
||||
if (err && err.response) { |
||||
switch (err.response.status) { |
||||
case 400: |
||||
err.message = "请求错误"; |
||||
break |
||||
case 401: |
||||
err.message = "未授权"; |
||||
break |
||||
case 403: |
||||
err.message = "拒绝访问"; |
||||
break |
||||
case 404: |
||||
err.message = `请求地址出错:${err.response.config.url}`; |
||||
break |
||||
case 408: |
||||
err.message = "请求超时"; |
||||
break; |
||||
case 500: |
||||
err.message = "服务器内部错误"; |
||||
break; |
||||
case 501: |
||||
err.message = "服务未实现"; |
||||
break; |
||||
case 502: |
||||
err.message = "网关错误"; |
||||
break; |
||||
case 503: |
||||
err.message = "服务不可用"; |
||||
break; |
||||
case 504: |
||||
err.message = "网关超时"; |
||||
break; |
||||
case 505: |
||||
err.message = "HTTP版本不受支持"; |
||||
break; |
||||
default: |
||||
} |
||||
} |
||||
console.log(err); |
||||
if (err.message) { |
||||
ElMessage({message: err.message, type: 'error', showClose: true}); |
||||
} |
||||
return Promise.reject(err); |
||||
} |
||||
); |
||||
//请求处理
|
||||
instance(options).then( |
||||
/** |
||||
* response 统一格式 |
||||
* { |
||||
* code: 200, |
||||
* msg: '消息[String]', |
||||
* data: '返回数据[Any]' |
||||
* } |
||||
* code说明: |
||||
* 200 成功 |
||||
* -1 失败,可能网络不通,可能后台服务异常或其它异常 |
||||
* -2 登录失效跳回登录 |
||||
*/ |
||||
(res) => { |
||||
if (res.code === 200) { |
||||
resolve(res); |
||||
}else{ |
||||
if (res.code === -2) { |
||||
router.push("/login"); |
||||
} |
||||
ElMessage({message: res.msg || "操作失败", type: "error", showClose: true}); |
||||
reject(res); |
||||
} |
||||
} |
||||
).catch( |
||||
(error) => { |
||||
reject(error); |
||||
} |
||||
) |
||||
}) |
||||
} |
Loading…
Reference in new issue