request.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import {
  2. HTTP_REQUEST_URL,
  3. HEADER,
  4. TOKENNAME,
  5. HEADERPARAMS
  6. } from '@/config/app';
  7. import {
  8. toLogin,
  9. checkLogin
  10. } from '../libs/login';
  11. import store from '../store';
  12. import { getTerminal } from "./util";
  13. // TODO 芋艿:临时解决 uniapp 在小程序,undefined 会被 tostring 的问题
  14. function deleteUndefinedProperties(obj) {
  15. for (let key in obj) {
  16. if (obj.hasOwnProperty(key)) {
  17. if (typeof obj[key] === 'object' && obj[key] !== null) {
  18. deleteUndefinedProperties(obj[key]); // 递归调用,处理嵌套的对象
  19. } else if (obj[key] === undefined) {
  20. delete obj[key];
  21. }
  22. }
  23. }
  24. }
  25. // 定义并存储域名变量
  26. const DOMAIN_KEY = 'CURRENT_DOMAIN';
  27. const DEFAULT_DOMAIN = 'https://5y413b7433.yicp.fun/';
  28. // 检查缓存中是否已有域名,如果没有则设置默认域名
  29. if (!uni.getStorageSync(DOMAIN_KEY)) {
  30. uni.setStorageSync(DOMAIN_KEY, DEFAULT_DOMAIN);
  31. }
  32. // 获取缓存中的域名
  33. const getDomain = () => {
  34. return uni.getStorageSync(DOMAIN_KEY);
  35. }
  36. // 设置缓存中的域名
  37. const setDomain = (domain) => {
  38. uni.setStorageSync(DOMAIN_KEY, domain);
  39. }
  40. /**
  41. * 发送请求
  42. */
  43. function baseRequest(url, method, data, { noAuth = false, noVerify = false }, params) {
  44. let Url = HTTP_REQUEST_URL, header = HEADER;
  45. if (params != undefined) {
  46. header = HEADERPARAMS;
  47. }
  48. if (!noAuth) {
  49. //登录过期自动登录
  50. if (!store.state.app.token && !checkLogin()) {
  51. toLogin();
  52. return Promise.reject({
  53. msg: '未登录'
  54. });
  55. }
  56. }
  57. deleteUndefinedProperties(data);
  58. // TODO 补个 header 多租户
  59. if (url.indexOf('app-api') >= 0) {
  60. header = {
  61. ...header
  62. }
  63. header['tenant-id'] = 1;
  64. }
  65. // 终端
  66. header['terminal'] = getTerminal();
  67. if (store.state.app.token) {
  68. header['Authorization'] = 'Bearer ' + store.state.app.token;
  69. }
  70. const isUseSleep = uni.getStorageSync("useSleep");
  71. // : 'http://yunai.natapp1.cc/' + url, // TODO 芋艿:搞个 url 的配置
  72. // : 'http://127.0.0.1:48080/' + url, // TODO 芋艿:搞个 url 的配置
  73. // : 'http://api-dashboard.yudao.iocoder.cn/' + url, // TODO 芋艿:搞个 url 的配置
  74. const baseUrl = 'http://192.168.110.185:48060/';
  75. const sleepUrl = 'http://api.slaaplekker.cn';
  76. return new Promise((resolve, reject) => {
  77. uni.request({
  78. url: url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url,
  79. method: method || 'GET',
  80. header: header,
  81. data: data || {},
  82. success: (res) => {
  83. console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '成功接口');
  84. console.log(res, '我接口请求成功了');
  85. if (noVerify)
  86. resolve(res.data, res);
  87. else if (res.data.code === 200 || res.data.code === 0)
  88. resolve(res.data, res);
  89. else if ([410000, 410001, 410002, 401].indexOf(res.data.code) !== -1) {
  90. toLogin();
  91. reject(res.data);
  92. } else
  93. reject(res.data.msg || res.data.message || '系统错误');
  94. },
  95. fail: (msg) => {
  96. console.log(url.indexOf('app-api') < 0 ? Url + '/api/front/' + url : getDomain() + url, '失败接口');
  97. console.log(msg, '我是失败接口');
  98. reject('请求失败');
  99. }
  100. });
  101. });
  102. }
  103. const request = {};
  104. ['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
  105. request[method] = (api, data, opt, params) => baseRequest(api, method, data, opt || {}, params);
  106. });
  107. export {
  108. getDomain,
  109. setDomain
  110. };
  111. export default request;