vue中調(diào)用HTTP請(qǐng)求的詳細(xì)步驟
1. 本文環(huán)境
- Vue版本 :
3.4.29 Node.js版本 :v20.15.0- 系統(tǒng) :
Windows11 64位 - IDE :
VsCode 1.91.0
2. 訪問HTTP
在Vue中,訪問HTTP,可以使用axios第三方庫(kù)。
axios 是一個(gè)基于 promise 的網(wǎng)絡(luò)請(qǐng)求庫(kù),可以用于瀏覽器和 node.js。axios使用簡(jiǎn)單,包尺寸小且提供了易于擴(kuò)展的接口。
2.1 安裝axios
CMD進(jìn)入項(xiàng)目根目錄下,然后執(zhí)行如下命令,安裝axios
npm install axios
卸載的命令是 npm uninstall axios
2.2 編寫HTTP請(qǐng)求相關(guān)代碼
這里我們以請(qǐng)求http://www.baidu.com/接口,發(fā)起GET請(qǐng)求為例
<script setup lang="ts">
import axios from 'axios';
import { ref } from 'vue';
let message = ref("")
const loadBaiduInfo = async () => {
let response = await axios.get('http://www.baidu.com/')
message.value = response.data
}
</script>
<template>
<div>
<p> 數(shù)據(jù):{{ message }}</p>
<button @click="loadBaiduInfo">獲取數(shù)據(jù)</button>
</div>
</template>
<style scoped></style>
2.3 運(yùn)行項(xiàng)目
運(yùn)行項(xiàng)目,點(diǎn)擊獲取數(shù)據(jù)按鈕,發(fā)現(xiàn)沒有反應(yīng)。
點(diǎn)擊F12,進(jìn)入開發(fā)者工具,在Console中可以看到如下錯(cuò)誤 : No 'Access-Control-Allow-Origin' header is present on the requested resource.

這個(gè)錯(cuò)誤是什么原因呢 ? 是跨域問題。
2.4 跨域問題是什么
跨域問題,是Web開發(fā)中經(jīng)常遇到的一個(gè)問題,它主要涉及瀏覽器安全策略,防止惡意網(wǎng)站讀取另一個(gè)網(wǎng)站的數(shù)據(jù)。
跨域問題(Cross-Origin Resource Sharing,簡(jiǎn)稱 CORS)出現(xiàn)在Web開發(fā)中,特別是進(jìn)行前端(如JavaScript)編程時(shí),嘗試從一個(gè)域(Domain)訪問另一個(gè)域的資源(如API接口、圖片、腳本等)。這是由于瀏覽器實(shí)施的同源策略(Same-origin policy)所引起的。
同源策略 是一項(xiàng)重要的安全措施,用于限制一個(gè)網(wǎng)頁(yè)上的腳本只能與同源的服務(wù)器交互,以防止惡意網(wǎng)站讀取另一個(gè)網(wǎng)站的數(shù)據(jù)。同源指的是兩個(gè)URL的協(xié)議、域名和端口號(hào)完全相同。如果這三個(gè)條件中任何一個(gè)不匹配,就認(rèn)為是跨域。
2.5 解決跨域問題
那么怎么解決跨域問題呢 ?
只需要在vite.config.ts中,配置好代理服務(wù)器。
server: {
//host: '0.0.0.0',
//https : false,
port: 18935,
proxy: {
'/myapi': {
target: 'https://www.baidu.com',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/myapi/, '')
}
}
},
然后將axios的請(qǐng)求也改成/myapi
let response = await axios.get('/myapi')
再次運(yùn)行項(xiàng)目,可以發(fā)現(xiàn)接口訪問成功了

3. Post請(qǐng)求
發(fā)起一個(gè) POST 請(qǐng)求
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
發(fā)起多個(gè)并發(fā)請(qǐng)求
function getUserAccount() {
return axios.get('/user/12345');
}
function getUserPermissions() {
return axios.get('/user/12345/permissions');
}
const [acct, perm] = await Promise.all([getUserAccount(), getUserPermissions()]);
// OR
Promise.all([getUserAccount(), getUserPermissions()])
.then(function ([acct, perm]) {
// ...
});
到此這篇關(guān)于vue中調(diào)用HTTP請(qǐng)求的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)vue調(diào)用HTTP請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vue 路由跳轉(zhuǎn)四種方式 (帶參數(shù))
這篇文章主要介紹了vue 路由跳轉(zhuǎn)四種方式 (帶參數(shù)),本文通過實(shí)例代碼給大家介紹的詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
vue require.context全局注冊(cè)組件的具體實(shí)現(xiàn)
本文主要介紹了vue require.context全局注冊(cè)組件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
使用生成條形碼并打印和vue-print-nb以及報(bào)錯(cuò)問題的解決
在TypeScript項(xiàng)目中,正確安裝vue3-print-nb并配置env.d.ts聲明模塊,添加tsconfig.json的include路徑,確保全局掛載以實(shí)現(xiàn)條形碼和批量打印功能2025-07-07
詳解vue-cli 腳手架項(xiàng)目-package.json
本篇文章主要介紹了詳解vue-cli 腳手架項(xiàng)目-package.json,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-07-07
Vuex數(shù)據(jù)持久化實(shí)現(xiàn)的思路與代碼
Vuex數(shù)據(jù)持久化可以很好的解決全局狀態(tài)管理,當(dāng)刷新后數(shù)據(jù)會(huì)消失,這是我們不愿意看到的。這篇文章主要給大家介紹了關(guān)于Vuex數(shù)據(jù)持久化實(shí)現(xiàn)的思路與代碼,需要的朋友可以參考下2021-05-05
Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的方法代碼
這篇文章主要給大家介紹了關(guān)于Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的相關(guān)資料,Pinia是Vue.js的官方狀態(tài)管理庫(kù),輕量且功能強(qiáng)大,支持模塊化和TypeScript,PiniaPluginPersistedState是一個(gè)插件,需要的朋友可以參考下2024-11-11
vue.js指令v-for使用以及下標(biāo)索引的獲取
今天小編就為大家分享一篇關(guān)于vue.js指令v-for使用以及下標(biāo)索引的獲取,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
vue setInterval 定時(shí)器失效的解決方式
這篇文章主要介紹了vue setInterval 定時(shí)器失效的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-07-07

