request.js 3.0 KB

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