index.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import axios from "axios";
  2. import { showLoadingToast, closeToast, showToast } from "vant";
  3. //正确写法
  4. // console.log("import.meta.env", import.meta.env.VITE_API_URL);
  5. //创建一个新的请求实例instance,instance.的用法和axios.的用法一致,可以使用instance({})、instance.get()、instance.post()
  6. const instace = axios.create({
  7. baseURL: '/', //默认配置(这里不要用process.env,个人百度这个在vite中被废弃掉了,属性名必须以VITE_API_开头,否则 import.meta.env检测不到)
  8. timeout: 5000, //超时时间
  9. });
  10. //配置请求拦截器,在请求之前的数据处理,比如在请求头添加token,所有的请求都会经过拦截器
  11. instace.interceptors.request.use(
  12. //config:该参数表示当前请求的配置对象
  13. (config) => {
  14. //例如:
  15. //在请求头统一添加token
  16. //或者请求之前显示lodding图标(这里只演示这个)
  17. //这里是vant组件库的loadding,安装和配置请查看此文档的vant组件库的配置https://blog.csdn.net/weixin_68658847/article/details/129331162
  18. showLoadingToast ({
  19. duration: 0,
  20. message: "...",
  21. });
  22. return config;
  23. },
  24. (err) => {
  25. closeToast(); //请求失败关闭loadding
  26. return Promise.reject(err); //将错误消息挂到promise的失败函数上
  27. }
  28. );
  29. //配置响应拦截器
  30. // 响应拦截器:在请求响应之后对数据处理,比如:登录失败、请求数据失败的处理
  31. // instance.interceptors.response.use(response=>{l}, err=>{});
  32. // 响应成功:执行回调函数1;响应失败,执行回调函数2
  33. instace.interceptors.response.use(
  34. (response) => {
  35. closeToast(); //响应成功关闭loadding
  36. return response; //这里的response就是请求成功后的res , response.data即是请求成功后回调函数内的参数res.data
  37. },
  38. (err) => {
  39. closeToast(); //响应失败关闭loadding
  40. const locale = getLang();
  41. showToast(locale != "zh" ? 'The current phone network is abnormal, please make sure the network is normal' : "当前手机网络异常,请确保网络通畅。")
  42. return Promise.reject(err); //将错误消息挂到promise的失败函数上
  43. }
  44. );
  45. //封装请求的api
  46. const callapi = (method = "GET", url, data = {}, headers) => {
  47. return instace({
  48. method,
  49. url,
  50. params: method === "GET" ? data : {},
  51. data: method === "POST" ? data : {},
  52. headers,
  53. });
  54. };
  55. function getLang() {
  56. return localStorage.getItem("lang") || "zh";
  57. }
  58. //封装GET请求函数
  59. export const getapi = (url, data, headers) => callapi("GET", url, data, headers);
  60. export const postapi = (url, data, headers) => callapi("POST", url, data, headers);