request.ts 2.3 KB

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