vue3+vite項(xiàng)目跨域配置踩坑實(shí)戰(zhàn)篇
寫這篇多少有點(diǎn)心情復(fù)雜,畢竟因?yàn)橐粋€(gè)巨巨巨巨沒意思的bug卡了兩整天…
廢話不多說啦,開篇入題叭,希望大家都能改好自己的bugggggg?。?!
1.vite.config.js配置
注意:因?yàn)槲沂怯?strong>vite創(chuàng)建的,不是vue-cli,當(dāng)時(shí)搜了好多教程都教的是新建一個(gè)vue.config.js,發(fā)現(xiàn)根本沒有生效,所以,如果使用vite創(chuàng)建的項(xiàng)目就在vite.config.js里面配置如下代碼:
以我要訪問的疫情數(shù)據(jù)api為例,原api地址:https://api.inews.qq.com/testaxios/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard
import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [vue()], server: { port: 3000, proxy: { '/testaxios': { target: 'https://api.inews.qq.com/', // target就是你要訪問的目標(biāo)地址,可以是基礎(chǔ)地址,這樣方便在這個(gè)網(wǎng)站的其他api口調(diào)用數(shù)據(jù) ws: true, changeOrigin: true, rewrite: (path) => path.replace(/^\/testaxios/, ''), // 要記得加rewrite這句 }, }, }, })
2.api文件
我寫代碼的時(shí)候,把a(bǔ)pi相關(guān)的調(diào)用函數(shù)封裝在了一個(gè)文件里面,在api/index.js文件里,然后其他地方在用的時(shí)候就可以直接調(diào)用函數(shù)了。
除此之外,axios的請(qǐng)求也被我封裝起來了,copy的網(wǎng)上的封裝代碼,也可以直接引入axios,需要的話拿走就好了。
api / index.js
import axios from "../utils/requst" // import axios from "axios" const api = { // 疫情數(shù)據(jù) getNcov(){ return axios.get("testaxios/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard") }, // 城市數(shù)據(jù) getNcovCity(){ return axios.get("testaxios/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf") }, getNcovCity2(){ return axios.get("newsqa/v1/query/inner/publish/modules/list?modules=chinaDayList,chinaDayAddList,nowConfirmStatis,provinceCompare") } } export default api;
注意:這里前面只要加上你上面配置的前綴testaxios(前面不用 / 了),后面跟著原地址的后半部分就歐克了!
utils / requst.js
import axios from "axios" import qs from "querystring" /** * 處理失敗的方法 * status:狀態(tài)碼 * info:信息 */ const errorHandle = (status,info) =>{ switch(status){ case 400: console.log("語義有誤,當(dāng)前請(qǐng)求無法被服務(wù)器理解。除非進(jìn)行修改,否則客戶端不應(yīng)該重復(fù)提交這個(gè)請(qǐng)求。") break; case 401: // token:令牌 console.log("服務(wù)器認(rèn)證失敗") break; case 403: console.log("服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行它"); break; case 404: console.log("請(qǐng)檢查網(wǎng)絡(luò)請(qǐng)求地址") break; case 500: console.log("服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況,導(dǎo)致了它無法完成對(duì)請(qǐng)求的處理。一般來說,這個(gè)問題都會(huì)在服務(wù)器的程序碼出錯(cuò)時(shí)出現(xiàn)。") break; case 502: console.log("作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從上游服務(wù)器接收到無效的響應(yīng)。") break; default: console.log(info) break; } } /** * 創(chuàng)建axios實(shí)例對(duì)象 */ const instance = axios.create({ // 公共配置 // baseURL:"http://iwenwiki.com", timeout:8000 }) /** * 處理攔截器 */ /** * 請(qǐng)求攔截 */ instance.interceptors.request.use( config => { if(config.method === "post"){ config.data = qs.stringify(config.data) } return config }, error => Promise.reject(error) ) /** * 響應(yīng)攔截 */ instance.interceptors.response.use( // 完成了 response => response.status === 200 ? Promise.resolve(response) : Promise.reject(response), error => { const { response } = error; errorHandle(response.status,response.info); } ) export default instance
3.調(diào)用api相關(guān)函數(shù)
我是在home.vue里面調(diào)用的,直接import api文件以后就可以直接調(diào)用函數(shù)了
mounted(){ api.getNcov().then(res=>{ console.log(res.data) }).catch((error)=>{console.log(error)}); }
沒啦?。。。。。。。。?! 沖啊啊啊啊啊啊?。。。。。。。。。?/p>
總結(jié)
到此這篇關(guān)于vue3+vite項(xiàng)目跨域配置踩坑實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)vue3+vite跨域配置踩坑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue代理請(qǐng)求數(shù)據(jù)出現(xiàn)404問題及解決
這篇文章主要介紹了Vue代理請(qǐng)求數(shù)據(jù)出現(xiàn)404的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Vue $nextTick 為什么能獲取到最新Dom源碼解析
這篇文章主要為大家介紹了Vue $nextTick 為什么能獲取到最新Dom源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Vite版本更新檢查實(shí)現(xiàn)頁面自動(dòng)刷新的解決思路
這篇文章主要給大家介紹了關(guān)于Vite版本更新檢查實(shí)現(xiàn)頁面自動(dòng)刷新的解決思路,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02vue如何解決數(shù)據(jù)加載時(shí),插值表達(dá)式閃爍問題
這篇文章主要介紹了vue如何解決數(shù)據(jù)加載時(shí),插值表達(dá)式閃爍問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01vue3+ElementPlus+VueCropper實(shí)現(xiàn)上傳圖片功能
文章介紹了如何在Vue3、ElementPlus和VueCropper組件中實(shí)現(xiàn)圖片上傳和裁剪功能,包括放大、縮小等操作,感興趣的朋友跟隨小編一起看看吧2025-01-01vue項(xiàng)目中js-cookie的使用存儲(chǔ)token操作
這篇文章主要介紹了vue項(xiàng)目中js-cookie的使用存儲(chǔ)token操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11