request.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import Loading from '../components/Loading';
  2. /**
  3. * 检查HTTP请求状态
  4. */
  5. function checkStatus(response) {
  6. console.log('res1', response);
  7. if (response.status >= 200 && response.status < 300) {
  8. return response;
  9. }
  10. const error = new Error(response.statusText);
  11. error.response = response;
  12. throw error;
  13. }
  14. /**
  15. * 将Response内容转为JSON格式
  16. */
  17. function parseJSON(response) {
  18. Loading.hide();
  19. return response.json();
  20. }
  21. /**
  22. * 统一拦截接口返回数据的状态,提示错误消息
  23. */
  24. function checkAPIDatas(data) {
  25. console.log('data', data);
  26. if (!data.success) {
  27. const code = data;
  28. }
  29. Loading.hide();
  30. return data;
  31. }
  32. function checkAPIError(err) {
  33. console.log('err', err);
  34. // const code = err.response.code;
  35. // const status = err.response.status;
  36. // const { url, type, oStatus, statusText } = err.response;
  37. // Message.error(`地址:${url} 类型:${type} 状态:${oStatus} 信息:${statusText}`, 10);
  38. Loading.hide();
  39. return {
  40. err
  41. };
  42. }
  43. /**
  44. * Requests a URL, returning a promise.
  45. * @param {string} url The URL we want to request
  46. * @param {object} [options] The options we want to pass to "fetch"
  47. * @return {object} An object containing either "data" or "err"
  48. */
  49. const request = async (url, options) => {
  50. Loading.show();
  51. const file_uid = await getuid();
  52. if (options) {
  53. const method = options.method.toUpperCase();
  54. // switch(method){
  55. // case 'POST':
  56. // options.headers = {
  57. // 'Accept': 'application/json',
  58. // 'Content-Type': '"Content-Type": "application/json',
  59. // "uid": 'c2e13090a563447c8744a8c03171d1db',
  60. // 'token': await storage.load({
  61. // key: 'token'
  62. // })
  63. // };
  64. // break;
  65. // case 'PUT':
  66. // options.headers = {
  67. // 'Accept': 'application/json',
  68. // 'Content-Type': 'application/x-www-form-urlencoded',
  69. // "uid": 'c2e13090a563447c8744a8c03171d1db',
  70. // // 'token': await storage.load({
  71. // // key: 'token'
  72. // // })
  73. // };
  74. // break;
  75. // default:
  76. // options.headers = {
  77. // 'token': await storage.load({
  78. // key: 'token'
  79. // })
  80. // };
  81. // break;
  82. // // }
  83. // const token = await storage.load({
  84. // key: 'token'
  85. // });
  86. options.headers = {
  87. Accept: 'application/json',
  88. 'Content-Type': 'application/json',
  89. uid: file_uid
  90. // 'token': token? token : null
  91. };
  92. if (method === 'POST' || method === 'PATCH' || method === 'DELETE' || method === 'PUT') {
  93. options.body = JSON.stringify(options.body);
  94. }
  95. // else {
  96. // options.headers = {
  97. // // token: await storage.load({
  98. // // key: "token"
  99. // // })
  100. // };
  101. // }
  102. }
  103. console.log('options', options);
  104. return fetch(url, options).then(checkStatus).then(parseJSON).then(checkAPIDatas).catch(checkAPIError);
  105. };
  106. async function getuid() {
  107. const uid = await storage
  108. .load({
  109. key: 'userInfo'
  110. })
  111. .catch((error) => {
  112. return '';
  113. });
  114. if (uid === '') {
  115. return '';
  116. }
  117. return JSON.parse(uid).uid;
  118. }
  119. export default request;