request.js 2.7 KB

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