getData.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import { getToken } from '@/store/useCookieStore';
  2. //const servUrl = 'http://apipre1.bjzxtw.org.cn:29501'; //pre
  3. const servUrl = 'http://apidev.bjzxtw.org.cn';
  4. const UserUrl = 'http://localhost:3000'; //必填,如果没有这个无法会报错用户没有权限
  5. // requestData方法 如果只是单一请求,可以直接调用这个方法
  6. function requestData(url, options = {}) {
  7. let fullUrl = `${servUrl}${url}`;
  8. // 生成唯一的 key
  9. const key = `${url}-${JSON.stringify(options.query || options.body)}`;
  10. // 设置默认的请求头
  11. const headers = {
  12. 'Content-Type': 'application/json',
  13. 'Userurl': 'nwpre.bjzxtw.org.cn',
  14. 'token': getToken(),
  15. //'Origin': 'http://nwpre.bjzxtw.org.cn',//pre
  16. 'Origin': UserUrl,
  17. };
  18. // 确定请求方法
  19. const method = options.method || 'GET';
  20. // 使用 useAsyncData 进行数据获取
  21. const { data, error } = useAsyncData(key, () => {
  22. return $fetch(fullUrl, {
  23. method,
  24. headers,
  25. body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
  26. query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
  27. });
  28. }, { lazy: true }); // 禁用缓存
  29. return { data, error };
  30. }
  31. // requestDataPromise 如果你的请求中的参数依赖上一个请求,使用这个方法
  32. function requestDataPromise(url, options = {}) {
  33. return new Promise(async (resolve, reject) => {
  34. let fullUrl = 'http://apidev.bjzxtw.org.cn' + url;
  35. console.log(fullUrl);
  36. console.log(servUrl);
  37. // 生成唯一的 key
  38. const key = `${url}-${JSON.stringify(options.query || options.body)}`;
  39. // 设置默认的请求头
  40. const headers = {
  41. 'Content-Type': 'application/json',
  42. 'Userurl': 'nwpre.bjzxtw.org.cn',
  43. 'token': getToken(),
  44. 'Origin': UserUrl,
  45. };
  46. // 确定请求方法
  47. const method = options.method || 'GET';
  48. try {
  49. // 使用 useAsyncData 进行数据获取
  50. const { data, error } = await useAsyncData(key, () => {
  51. return $fetch(fullUrl, {
  52. method,
  53. headers,
  54. body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
  55. query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
  56. });
  57. }, { lazy: true }); // 禁用缓存
  58. if (error.value) {
  59. reject(error.value); // 如果有错误,拒绝 Promise
  60. } else {
  61. resolve(data.value); // 如果成功,返回数据
  62. }
  63. } catch (err) {
  64. reject(err); // 捕获异常并拒绝 Promise
  65. }
  66. });
  67. }
  68. // requestDataWebUrl 请求非本网地址时 使用这个方法
  69. function requestDataWebUrl(url, options = {}) {
  70. return new Promise(async (resolve, reject) => {
  71. let fullUrl = `${url}`;
  72. // 生成唯一的 key
  73. const key = `${url}-${JSON.stringify(options.query || options.body)}`;
  74. // 设置默认的请求头
  75. const headers = {
  76. 'Content-Type': 'application/json',
  77. 'Userurl': 'nwpre.bjzxtw.org.cn',
  78. 'token': getToken(),
  79. 'Origin': UserUrl,
  80. };
  81. // 确定请求方法
  82. const method = options.method || 'GET';
  83. try {
  84. // 使用 useAsyncData 进行数据获取
  85. const { data, error } = await useAsyncData(key, () => {
  86. return $fetch(fullUrl, {
  87. method,
  88. headers,
  89. body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
  90. query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
  91. });
  92. }, { lazy: true }); // 禁用缓存
  93. if (error.value) {
  94. reject(error.value); // 如果有错误,拒绝 Promise
  95. } else {
  96. resolve(data.value); // 如果成功,返回数据
  97. }
  98. } catch (err) {
  99. reject(err); // 捕获异常并拒绝 Promise
  100. }
  101. });
  102. }
  103. export { requestData, requestDataPromise ,requestDataWebUrl };