request.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import axios from 'axios';
  2. import cookies from 'vue-cookies'
  3. import { userStore } from '@/store/userInfo'
  4. import Qs from 'qs'
  5. // 创建请求实例
  6. const instance = axios.create({
  7. baseURL: 'http://81.68.234.235:8032',
  8. // 指定请求超时的毫秒数
  9. timeout: 10000,
  10. // 表示跨域请求时是否需要使用凭证
  11. withCredentials: false,
  12. });
  13. // 前置拦截器(发起请求之前的拦截)
  14. instance.interceptors.request.use(
  15. (config) => {
  16. /**
  17. * 在这里一般会携带前台的参数发送给后台,比如下面这段代码:
  18. * const token = getToken()
  19. * if (token) {
  20. * config.headers.token = token
  21. * }
  22. */
  23. if(!(config.url.indexOf("pdf-tech/vppMember/create") !== -1 || config.url.indexOf("/pdf-tech/login") !== -1)){
  24. const token = cookies.get('accessToken')
  25. config.headers.Authorization = 'Bearer ' + token
  26. }
  27. return config;
  28. },
  29. (error) => {
  30. return Promise.reject(error);
  31. },
  32. );
  33. // 后置拦截器(获取到响应时的拦截)
  34. instance.interceptors.response.use(
  35. (response) => {
  36. /**
  37. * 根据你的项目实际情况来对 response 和 error 做处理
  38. * 这里对 response 和 error 不做任何处理,直接返回
  39. */
  40. return response;
  41. },
  42. (error) => {
  43. const { response } = error;
  44. if (response && response.data) {
  45. if(response.data.code === 310 && response.data.msg === "无效的token或者token已过期"){
  46. window.location.href = '/login'
  47. this.$cookies.remove('accessToken')
  48. userStore().clearUserInfo()
  49. }
  50. return Promise.reject(error);
  51. }
  52. const { message } = error;
  53. console.error(message);
  54. return Promise.reject(error);
  55. },
  56. );
  57. // 导出常用函数
  58. /**
  59. * @param {string} url
  60. * @param {object} data
  61. * @param {object} params
  62. */
  63. export function post(url, data = {}, params = {}) {
  64. return instance({
  65. method: 'post',
  66. url,
  67. data,
  68. params,
  69. });
  70. }
  71. /**
  72. * @param {string} url
  73. * @param {object} params
  74. */
  75. export function get(url, params = {}) {
  76. return instance({
  77. method: 'get',
  78. url,
  79. params,
  80. });
  81. }
  82. export function downLoad(url, params = {}) {
  83. return instance({
  84. method: 'get',
  85. url,
  86. params,
  87. responseType:"arraybuffer"
  88. });
  89. }
  90. /**
  91. * @param {string} url
  92. * @param {object} data
  93. * @param {object} params
  94. */
  95. export function put(url, data = {}, params = {}) {
  96. return instance({
  97. method: 'put',
  98. url,
  99. params,
  100. data,
  101. });
  102. }
  103. /**
  104. * @param {string} url
  105. * @param {object} params
  106. */
  107. export function _delete(url, params = {}) {
  108. return instance({
  109. method: 'delete',
  110. url,
  111. params,
  112. });
  113. }
  114. /**
  115. * @param {string} url
  116. * @param {object} data
  117. */
  118. export function postWithHeader(url, data = {}) {
  119. return instance({
  120. method: 'post',
  121. url,
  122. data,
  123. headers: {
  124. 'Content-Type': 'application/json'
  125. },
  126. dataType: "json",
  127. });
  128. }
  129. /**
  130. * @param {string} url
  131. * @param {object} data
  132. */
  133. export function putWithHeader(url, data = {}) {
  134. return instance({
  135. method: 'put',
  136. url,
  137. data,
  138. headers: {
  139. 'Content-Type': 'application/json'
  140. },
  141. dataType: "json",
  142. });
  143. }
  144. export default instance;