axiosUtils.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /**
  2. * 封装axios的类
  3. * nh 2021.12.23
  4. */
  5. import axios from "axios";
  6. import vueStore from "@/store";
  7. var CancelToken = axios.CancelToken;
  8. var cancel;
  9. // 创建axios实例
  10. const axiosservice = axios.create({
  11. timeout: 3000000, // 请求超时时间
  12. cancelToken: new CancelToken(function executor(c) {
  13. // executor 函数接收一个 cancel 函数作为参数
  14. cancel = c;
  15. }),
  16. });
  17. axiosservice.interceptors.request.use(
  18. (config) => {
  19. return config;
  20. },
  21. (error) => {
  22. return Promise.reject(error);
  23. }
  24. );
  25. axiosservice.interceptors.response.use(
  26. function (res) {
  27. //在这里对返回的数据进行处理
  28. let resp = res.data;
  29. return res;
  30. },
  31. function (err) {
  32. console.log("axios interceptors err = ", err);
  33. return Promise.reject(err);
  34. }
  35. );
  36. export class axiosUtils {
  37. /**
  38. * get请求
  39. * @param url
  40. * @param data
  41. * @returns
  42. */
  43. protected async getRequest(url: string, data: any) {
  44. try {
  45. let response = await this.customRequest(url, {}, data, "get");
  46. return response.data;
  47. } catch (err) {
  48. throw err;
  49. }
  50. }
  51. /**
  52. * post请求
  53. * @param url
  54. * @param data
  55. * @returns
  56. */
  57. protected async postRequest(url: string, data: any) {
  58. try {
  59. let response = await this.customRequest(url, {}, data, "post");
  60. return response;
  61. } catch (err) {
  62. throw err;
  63. }
  64. }
  65. /**
  66. * 自定义请求
  67. * @param url
  68. * @param headers
  69. * @param data
  70. * @param method get | post 默认post
  71. * @returns
  72. */
  73. protected async customRequest(
  74. url: string,
  75. headers: any,
  76. data: any,
  77. method: string = "post"
  78. ) {
  79. try {
  80. headers = headers || {};
  81. headers.groupCode =
  82. headers.groupCode || vueStore.state.selectProject.groupCode;
  83. headers.projectId = headers.projectId || vueStore.state.selectProject.id;
  84. let response = await axiosservice({
  85. url,
  86. headers: headers || {},
  87. data,
  88. method: method == "post" ? "post" : "get",
  89. });
  90. return response.data;
  91. } catch (err) {
  92. throw err;
  93. }
  94. }
  95. }