作者 RuoYi

支持是否需要设置token属性,自定义返回码消息。

  1 +export default {
  2 + '401': '认证失败,无法访问系统资源',
  3 + '403': '当前操作没有权限',
  4 + '404': '访问资源不存在',
  5 + 'default': '系统未知错误,请反馈给管理员'
  6 +}
@@ -2,6 +2,7 @@ import axios from 'axios' @@ -2,6 +2,7 @@ import axios from 'axios'
2 import { Notification, MessageBox, Message } from 'element-ui' 2 import { Notification, MessageBox, Message } from 'element-ui'
3 import store from '@/store' 3 import store from '@/store'
4 import { getToken } from '@/utils/auth' 4 import { getToken } from '@/utils/auth'
  5 +import errorCode from '@/utils/errorCode'
5 6
6 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' 7 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
7 // 创建axios实例 8 // 创建axios实例
@@ -12,22 +13,24 @@ const service = axios.create({ @@ -12,22 +13,24 @@ const service = axios.create({
12 timeout: 10000 13 timeout: 10000
13 }) 14 })
14 // request拦截器 15 // request拦截器
15 -service.interceptors.request.use(  
16 - config => {  
17 - if (getToken()) {  
18 - config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改  
19 - }  
20 - return config  
21 - },  
22 - error => { 16 +service.interceptors.request.use(config => {
  17 + // 是否需要设置 token
  18 + const isToken = (config.headers || {}).isToken === false
  19 + if (getToken() && !isToken) {
  20 + config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  21 + }
  22 + return config
  23 +}, error => {
23 console.log(error) 24 console.log(error)
24 Promise.reject(error) 25 Promise.reject(error)
25 - }  
26 -) 26 +})
27 27
28 // 响应拦截器 28 // 响应拦截器
29 service.interceptors.response.use(res => { 29 service.interceptors.response.use(res => {
30 - const code = res.data.code 30 + // 未设置状态码则默认成功状态
  31 + const code = res.data.code || 200;
  32 + // 获取错误信息
  33 + const message = errorCode[code] || res.data.msg || errorCode['default']
31 if (code === 401) { 34 if (code === 401) {
32 MessageBox.confirm( 35 MessageBox.confirm(
33 '登录状态已过期,您可以继续留在该页面,或者重新登录', 36 '登录状态已过期,您可以继续留在该页面,或者重新登录',
@@ -42,9 +45,15 @@ service.interceptors.response.use(res => { @@ -42,9 +45,15 @@ service.interceptors.response.use(res => {
42 location.reload() // 为了重新实例化vue-router对象 避免bug 45 location.reload() // 为了重新实例化vue-router对象 避免bug
43 }) 46 })
44 }) 47 })
  48 + } else if (code === 500) {
  49 + Message({
  50 + message: message,
  51 + type: 'error'
  52 + })
  53 + return Promise.reject(new Error(message))
45 } else if (code !== 200) { 54 } else if (code !== 200) {
46 Notification.error({ 55 Notification.error({
47 - title: res.data.msg 56 + title: message
48 }) 57 })
49 return Promise.reject('error') 58 return Promise.reject('error')
50 } else { 59 } else {
@@ -67,6 +67,7 @@ public class BaseController @@ -67,6 +67,7 @@ public class BaseController
67 { 67 {
68 TableDataInfo rspData = new TableDataInfo(); 68 TableDataInfo rspData = new TableDataInfo();
69 rspData.setCode(HttpStatus.SUCCESS); 69 rspData.setCode(HttpStatus.SUCCESS);
  70 + rspData.setMsg("查询成功");
70 rspData.setRows(list); 71 rspData.setRows(list);
71 rspData.setTotal(new PageInfo(list).getTotal()); 72 rspData.setTotal(new PageInfo(list).getTotal());
72 return rspData; 73 return rspData;