123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- import { getToken } from '@/store/useCookieStore';
- //获得nuxt.config中配置的域名
- //const servUrl = 'http://apipre1.bjzxtw.org.cn:29501'; //pre
- //const servUrl = 'http://apidev.bjzxtw.org.cn'; //dev
- //const UserUrl = 'http://localhost:3000'; //用户来源
- // requestData方法 如果只是单一请求,可以直接调用这个方法
- function requestData(url, options = {}) {
- //获得全局变量中的webUrl和userUrl
- const { $webUrl, $userUrl,$CwebUrl } = useNuxtApp()
- let fullUrl = $webUrl + url;
-
- // 生成唯一的 key
- const key = `${url}-${JSON.stringify(options.query || options.body)}`;
- // 设置默认的请求头
- const headers = {
- 'Content-Type': 'application/json',
- 'Userurl': $CwebUrl,
- 'token': getToken(),
- //'Origin': 'http://nwpre.bjzxtw.org.cn',//pre
- 'Origin': $CwebUrl,
- };
- // 确定请求方法
- const method = options.method || 'GET';
- // 使用 useAsyncData 进行数据获取
- const { data, error } = useAsyncData(key, () => {
- return $fetch(fullUrl, {
- method,
- headers,
- body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
- query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
- });
- }, { lazy: true }); // 禁用缓存
- return { data, error };
- }
- // requestDataPromise 如果你的请求中的参数依赖上一个请求,使用这个方法
- function requestDataPromise(url, options = {}) {
- return new Promise(async (resolve, reject) => {
- //获得全局变量中的webUrl和userUrl
- const { $webUrl, $userUrl , $CwebUrl } = useNuxtApp()
- let fullUrl = $webUrl + url;
- let key = `${url}-${JSON.stringify(options.query)}`;
- // console.log(555555555)
- // console.log(key)
- //let key = "abc" 不能为固定值
- //let key = Math.random().toString(36).substring(2, 15); 不能为固定方法 都会留下缓存
- // 设置默认的请求头
- const headers = {
- 'Content-Type': 'application/json',
- 'Userurl': $CwebUrl,
- 'token': getToken(),
- 'Origin': $CwebUrl,
- };
- // 确定请求方法
- const method = options.method || 'GET';
- try {
- // 使用 useAsyncData 进行数据获取
- const { data, error } = await useAsyncData(key, () => {
- return $fetch(fullUrl, {
- method,
- headers,
- body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
- query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
- });
- }, {
- lazy: false,
- });
- if (error.value) {
- reject(error.value); // 如果有错误,拒绝 Promise
- } else {
- resolve(data.value); // 如果成功,返回数据
- }
- } catch (err) {
- reject(err); // 捕获异常并拒绝 Promise
- }
- });
- }
- // requestDataWebUrl 请求非本网地址时 使用这个方法
- function requestDataWebUrl(url, options = {}) {
- return new Promise(async (resolve, reject) => {
- //获得全局变量中的webUrl和userUrl
- const { $webUrl, $userUrl, $CwebUrl } = useNuxtApp()
- let fullUrl = `${url}`;
- // 生成唯一的 key
- const key = `${url}-${JSON.stringify(options.query || options.body)}`;
- // 设置默认的请求头
- const headers = {
- 'Content-Type': 'application/json',
- 'Userurl': $CwebUrl,
- 'token': getToken(),
- 'Origin': $CwebUrl,
- };
- // 确定请求方法
- const method = options.method || 'GET';
- try {
- // 使用 useAsyncData 进行数据获取
- const { data, error } = await useAsyncData(key, () => {
- return $fetch(fullUrl, {
- method,
- headers,
- body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
- query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
- });
- }, { lazy: true }); // 禁用缓存
- if (error.value) {
- reject(error.value); // 如果有错误,拒绝 Promise
- } else {
- resolve(data.value); // 如果成功,返回数据
- }
- } catch (err) {
- reject(err); // 捕获异常并拒绝 Promise
- }
- });
- }
- // 在首页执行缓存
- function requestHome(url, options = {}) {
- return new Promise(async (resolve, reject) => {
- //获得全局变量中的webUrl和userUrl
- const { $webUrl, $userUrl,$CwebUrl } = useNuxtApp()
- let fullUrl = $webUrl + url;
- let key = `${url}-${JSON.stringify(options.query)}`;
- //let key = "abc" 不能为固定值
- //let key = Math.random().toString(36).substring(2, 15); 不能为固定方法 都会留下缓存
- // 设置默认的请求头
- const headers = {
- 'Content-Type': 'application/json',
- 'Userurl': $CwebUrl,
- 'token': getToken(),
- 'Origin': $CwebUrl,
- };
- // 确定请求方法
- const method = options.method || 'GET';
- try {
- // 使用 useAsyncData 进行数据获取
- const { data, error } = await useAsyncData(key, () => {
- return $fetch(fullUrl, {
- method,
- headers,
- body: method === 'POST' ? options.body : undefined, // 仅在 POST 请求时设置 body
- query: method === 'GET' ? options.query : undefined, // 仅在 GET 请求时设置 query
- });
- }, {
- lazy: true, //使用缓存
- });
- if (error.value) {
- reject(error.value); // 如果有错误,拒绝 Promise
- } else {
- resolve(data.value); // 如果成功,返回数据
- }
- } catch (err) {
- reject(err); // 捕获异常并拒绝 Promise
- }
- });
- }
- export { requestData, requestDataPromise ,requestDataWebUrl,requestHome };
|