request.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. const apiRouter = whiteUrl();
  9. const browserInfo = browser();
  10. const request = extend({
  11. requestType: "form",
  12. timeout: 10000,
  13. });
  14. request.interceptors.request.use(
  15. (url, options) => {
  16. const _prefix = storeData.proxy + storeData.platformApi;
  17. // 只有后台才去设置
  18. if (storeData.platformType === "WEB" && (apiRouter as any)[url]) {
  19. url = (apiRouter as any)[url];
  20. }
  21. const Authorization = getToken();
  22. const authHeaders: any = {};
  23. if (Authorization) {
  24. authHeaders.Authorization = Authorization;
  25. }
  26. return {
  27. url: _prefix + url,
  28. options: {
  29. ...options,
  30. params: cleanDeep(options.params),
  31. data: cleanDeep(options.data),
  32. headers: {
  33. ...options.headers,
  34. ...authHeaders,
  35. },
  36. },
  37. };
  38. },
  39. { global: false }
  40. );
  41. request.interceptors.response.use(
  42. async (res, options) => {
  43. if (res.status > 299 || res.status < 200) {
  44. const msg = res.statusText + ", 状态码" + res.status;
  45. showToast(msg);
  46. }
  47. const data = await res.clone().json();
  48. if (data.code === 5000) {
  49. return data
  50. }
  51. if (data.code !== 200 && data.errCode !== 0) {
  52. const msg = data.msg || data.message || "处理失败,请重试";
  53. if (!(data.code === 403 || data.code === 401)) {
  54. // storeData.status = 'error'
  55. // showToast('登录过期');
  56. }
  57. throw new Error(msg);
  58. }
  59. return data;
  60. },
  61. { global: false }
  62. );
  63. export default request;