request.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import axios from 'axios';
  2. import cookies from 'vue-cookies'
  3. const token = cookies.get('accessToken')
  4. axios.defaults.headers['authorization'] = `Bearer ${token}`;
  5. // 创建请求实例
  6. const instance = axios.create({
  7. baseURL: '/api',
  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. return config;
  24. },
  25. (error) => {
  26. return Promise.reject(error);
  27. },
  28. );
  29. // 后置拦截器(获取到响应时的拦截)
  30. instance.interceptors.response.use(
  31. (response) => {
  32. /**
  33. * 根据你的项目实际情况来对 response 和 error 做处理
  34. * 这里对 response 和 error 不做任何处理,直接返回
  35. */
  36. return response;
  37. },
  38. (error) => {
  39. const { response } = error;
  40. if (response && response.data) {
  41. return Promise.reject(error);
  42. }
  43. const { message } = error;
  44. console.error(message);
  45. return Promise.reject(error);
  46. },
  47. );
  48. // 导出常用函数
  49. /**
  50. * @param {string} url
  51. * @param {object} data
  52. * @param {object} params
  53. */
  54. export function post(url, data = {}, params = {}) {
  55. return instance({
  56. method: 'post',
  57. url,
  58. data,
  59. params,
  60. });
  61. }
  62. /**
  63. * @param {string} url
  64. * @param {object} params
  65. */
  66. export function get(url, params = {}) {
  67. return instance({
  68. method: 'get',
  69. url,
  70. params,
  71. });
  72. }
  73. /**
  74. * @param {string} url
  75. * @param {object} data
  76. * @param {object} params
  77. */
  78. export function put(url, data = {}, params = {}) {
  79. return instance({
  80. method: 'put',
  81. url,
  82. params,
  83. data,
  84. });
  85. }
  86. /**
  87. * @param {string} url
  88. * @param {object} params
  89. */
  90. export function _delete(url, params = {}) {
  91. return instance({
  92. method: 'delete',
  93. url,
  94. params,
  95. });
  96. }
  97. export default instance;