当前位置:   article > 正文

【Web系列二十二】Vue+Ts下实现axios拦截器_vue3+vite+ts+axios的路由拦截器

vue3+vite+ts+axios的路由拦截器

目录

写在前面

封装

使用


写在前面

        有时候我们希望axios请求实现一些统一的功能,比如携带用户信息,统一的消息处理等,这时候就可以使用axios拦截器在请求发出前和接收到反馈消息后做一些统一的处理。

封装

  1. import axios from "axios";
  2. let backURL1: string = "http://192.168.1.100:8080";
  3. let backURL2: string = "http://192.168.1.200:8020";
  4. const createService = (baseURL: string | undefined, isJsonQuest: boolean) => {
  5. // 基础配置
  6. const _axios = axios.create({
  7. timeout: 5 * 60 * 1000,
  8. baseURL,
  9. });
  10. // 请求发送前执行
  11. _axios.interceptors.request.use(
  12. (request: any): object => {
  13. request.headers["userId"] = 1;
  14. request.headers["account"] = "user";
  15. if (isJsonQuest) request.data = JSON.stringify(request.data); // 转为formdata数据格式
  16. return request;
  17. },
  18. (error) => {
  19. return Promise.reject(error); // 转到具体实现中的catch
  20. }
  21. );
  22. // 接收到结果后执行
  23. // 假设后端返回的内容格式如下: { 'status': '0'; 'msg': 'success'; 'info': 'data id: 1' }
  24. _axios.interceptors.response.use(
  25. (response: any): object => {
  26. if (response.data["status"] === 0)
  27. return response; // 转到具体实现中的then
  28. else {
  29. console.log(response.data["msg"] + response.data["info"])
  30. return Promise.reject(response); // 转到具体实现中的catch
  31. }
  32. },
  33. (error) => {
  34. return Promise.reject(error); // 转到具体实现中的catch
  35. }
  36. );
  37. return _axios;
  38. };
  39. export { backURL1, backURL2 }
  40. export const backURL1JSON = createService(backURL1, true);
  41. export const backURL1FORM = createService(backURL1, false);
  42. export const backURL2JSON = createService(backURL2, true);
  43. export const backURL2FORM = createService(backURL2, false);

使用

  1. import { baseURL1JSON } from "@/utils/axiosInterceptor.ts"
  2. function Test(): void {
  3. let form = new FormData();
  4. form.append("mission_id", "100");
  5. baseURL1JSON.post("/getData", form).then((response) => {
  6. console.log('getData success');
  7. })
  8. .catch((error) => {
  9. console.log(error);
  10. });
  11. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57144
推荐阅读
相关标签
  

闽ICP备14008679号