vue3+vite項(xiàng)目跨域配置踩坑實(shí)戰(zhàn)篇
寫(xiě)這篇多少有點(diǎn)心情復(fù)雜,畢竟因?yàn)橐粋€(gè)巨巨巨巨沒(méi)意思的bug卡了兩整天…
廢話不多說(shuō)啦,開(kāi)篇入題叭,希望大家都能改好自己的bugggggg!??!
1.vite.config.js配置
注意:因?yàn)槲沂怯?strong>vite創(chuàng)建的,不是vue-cli,當(dāng)時(shí)搜了好多教程都教的是新建一個(gè)vue.config.js,發(fā)現(xiàn)根本沒(méi)有生效,所以,如果使用vite創(chuàng)建的項(xiàng)目就在vite.config.js里面配置如下代碼:
以我要訪問(wèn)的疫情數(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就是你要訪問(wèn)的目標(biāo)地址,可以是基礎(chǔ)地址,這樣方便在這個(gè)網(wǎng)站的其他api口調(diào)用數(shù)據(jù)
ws: true,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/testaxios/, ''),
// 要記得加rewrite這句
},
},
},
})2.api文件
我寫(xiě)代碼的時(shí)候,把a(bǔ)pi相關(guān)的調(diào)用函數(shù)封裝在了一個(gè)文件里面,在api/index.js文件里,然后其他地方在用的時(shí)候就可以直接調(diào)用函數(shù)了。
除此之外,axios的請(qǐng)求也被我封裝起來(lái)了,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("語(yǔ)義有誤,當(dāng)前請(qǐng)求無(wú)法被服務(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)致了它無(wú)法完成對(duì)請(qǐng)求的處理。一般來(lái)說(shuō),這個(gè)問(wèn)題都會(huì)在服務(wù)器的程序碼出錯(cuò)時(shí)出現(xiàn)。")
break;
case 502:
console.log("作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從上游服務(wù)器接收到無(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 instance3.調(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)});
}沒(méi)啦?。。。。。。。。?! 沖啊啊啊啊啊啊?。。。。。。。。。?/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組件BootPage實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)功能
這篇文章主要為大家詳細(xì)介紹了Vue小組件BootPage實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
vue實(shí)現(xiàn)簡(jiǎn)單的跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡(jiǎn)單的跑馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Vue使用v-for數(shù)據(jù)渲染順序混亂的原因及解決方案
在 Vue.js 中,使用 v-for 指令進(jìn)行數(shù)據(jù)渲染時(shí),有時(shí)會(huì)遇到渲染順序混亂的問(wèn)題,這種問(wèn)題主要與 Vue 的響應(yīng)式系統(tǒng)、DOM 更新機(jī)制以及數(shù)組的變更方法有關(guān),以下是對(duì)這一現(xiàn)象的深入分析及解決方案,需要的朋友可以參考下2025-01-01
vue前端性能優(yōu)化之預(yù)加載和懶加載示例詳解
這篇文章主要為大家介紹了vue前端性能優(yōu)化之預(yù)加載和懶加載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
vue.js+Echarts開(kāi)發(fā)圖表放大縮小功能實(shí)例
本篇文章主要介紹了vue.js+Echarts開(kāi)發(fā)圖表放大縮小功能實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

