request.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { extend } from "umi-request";
  2. import { showToast } from "vant";
  3. import cleanDeep from "clean-deep";
  4. import { storeData } from "../store";
  5. import { browser, getToken } from ".";
  6. import { postMessage } from "./native-message";
  7. import { getQuery } from "/src/utils/queryString";
  8. const browserInfo = browser();
  9. const query = getQuery();
  10. const request = extend({
  11. requestType: "form",
  12. timeout: 10000,
  13. //prefix: 'https://www.baidu.com',
  14. });
  15. request.interceptors.request.use(
  16. (url, options) => {
  17. // console.log(9999,storeData.proxy,storeData.platformApi,options)
  18. // 内容平台的前缀为cbs-app
  19. const platformApi = options.isContentCenter ? '/cbs-app' : options.isExceptionLog ? '/api-auth' : storeData.platformApi
  20. const _prefix = storeData.proxy + platformApi;
  21. /**
  22. * 只有后台才去设置
  23. * 暂时没有用到,先注释掉(2024.1.19)
  24. */
  25. // if (storeData.platformType === "WEB" && (apiRouter as any)[url]) {
  26. // url = (apiRouter as any)[url];
  27. // }
  28. url = _prefix + url
  29. const Authorization = getToken();
  30. const authHeaders: any = {};
  31. // 内容平台的接口不需要传token,需要传签名
  32. if (Authorization && !options.isContentCenter && !options.noToken) {
  33. authHeaders.Authorization = Authorization;
  34. }
  35. return {
  36. url: url,
  37. options: {
  38. ...options,
  39. params: cleanDeep(options.params),
  40. data: cleanDeep(options.data),
  41. headers: {
  42. ...options.headers,
  43. ...authHeaders,
  44. },
  45. },
  46. };
  47. },
  48. { global: false }
  49. );
  50. request.interceptors.response.use(
  51. async (res, options) => {
  52. if (res.status > 299 || res.status < 200) {
  53. const msg = res.statusText + ", 状态码" + res.status;
  54. showToast(msg);
  55. }
  56. const data = await res.clone().json();
  57. if (data.code === 403) {
  58. return data
  59. }
  60. if (data.code !== 200 && data.errCode !== 0) {
  61. const msg = data.msg || data.message || "处理失败,请重试";
  62. if (!(data.code === 403 || data.code === 401)) {
  63. // storeData.status = 'error'
  64. // showToast('登录过期');
  65. }
  66. throw new Error(msg);
  67. }
  68. return data;
  69. },
  70. { global: false }
  71. );
  72. export default request;