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 };