request.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { extend } from 'umi-request';
  2. import cleanDeep from 'clean-deep';
  3. import { setLogout, setLoginError } from '@/state';
  4. import { postMessage } from './native-message';
  5. export interface SearchInitParams {
  6. rows?: string | number;
  7. page?: string | number;
  8. }
  9. const request = extend({
  10. // requestType: 'form',
  11. hideLoading: true, // 默认都不显示加载
  12. timeout: 20000,
  13. timeoutMessage: '请求超时'
  14. });
  15. // 是否是初始化接口
  16. let initRequest = false;
  17. request.interceptors.request.use(
  18. (url, options: any) => {
  19. initRequest = options.initRequest || false;
  20. const Authorization = sessionStorage.getItem('Authorization') || '';
  21. const authHeaders: any = {};
  22. if (
  23. Authorization &&
  24. ![
  25. '/api-oauth/userlogin',
  26. // `${state.platformApi}/user/getUserInfo`,
  27. '/api-oauth/open/sendSms'
  28. ].includes(url)
  29. ) {
  30. authHeaders.Authorization = Authorization;
  31. }
  32. return {
  33. url,
  34. options: {
  35. ...options,
  36. params: cleanDeep(options.params),
  37. data: cleanDeep(options.data),
  38. headers: {
  39. ...options.headers,
  40. ...authHeaders
  41. }
  42. }
  43. };
  44. },
  45. { global: false }
  46. );
  47. request.interceptors.response.use(
  48. async res => {
  49. if (res.status > 299 || res.status < 200) {
  50. const msg = '服务器错误,状态码' + res.status;
  51. throw new Error(msg);
  52. }
  53. const data = await res.clone().json();
  54. // 999 为特殊code码
  55. if (data.code !== 200 && data.errCode !== 0 && data.code !== 999) {
  56. const msg = data.msg || data.message || '处理失败,请重试';
  57. if (initRequest) {
  58. if (data.code === 403 || data.code === 5000) {
  59. setLogout();
  60. } else {
  61. setLoginError();
  62. }
  63. }
  64. console.log(data.code, '5104');
  65. if (!(data.code === 403 || data.code === 5000)) {
  66. // showToast(msg);
  67. }
  68. throw new Error(msg);
  69. }
  70. return res;
  71. },
  72. { global: false }
  73. );
  74. export default request;