getData.js 4.1 KB

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