nuxt3中如何進(jìn)行網(wǎng)絡(luò)api接口請求

nuxt3中如何進(jìn)行網(wǎng)絡(luò)api接口請求

nuxt3項(xiàng)目中需要調(diào)用springboot提供的服務(wù)接口。雖然nuxt3本身就支持提供接口服務(wù)痕檬,
但畢竟這個(gè)框架主要擅長的是ssr。一些復(fù)雜的業(yè)務(wù)后臺邏輯還是用成熟的springboot去做會好些尚镰。

nuxt3中使用網(wǎng)絡(luò)請求的方法變成了內(nèi)置的api鼻种。在之前版本nuxtjs中都是使用第三方式插件庫(axios)。新版本里官網(wǎng)明確指出更推薦使用內(nèi)置的方法來進(jìn)行網(wǎng)絡(luò)接口的請求澜薄。

先看下框架內(nèi)置的網(wǎng)絡(luò)請求的方式

.useFetch

<!-- 示例: -->

<script setup>
const { data: count } = await useFetch('/api/count')
</script>

<template>
  Page visits: {{ count }}
</template>

官網(wǎng)說這個(gè)接口是對 useAsyncData與$fetch的一層封閉为肮。
這樣似乎調(diào)用機(jī)制和useAsynData是一致的,但其實(shí)筆者用的時(shí)候發(fā)現(xiàn)還是有點(diǎn)區(qū)別的

useAsyncData 在server端會執(zhí)行肤京,但在client端會wait颊艳,并且上面代碼中的data數(shù)據(jù)和server端請求的一致。 直到下一次跳轉(zhuǎn)到此頁面中才會執(zhí)行。

而useFetch 在client端不會wait,而是直接返回一個(gè)空數(shù)據(jù)即 代碼中的data為空
這就導(dǎo)致頁面首次要展示的內(nèi)容在server和client端不一致棋枕,就會產(chǎn)生Hydration Mismatch 的錯誤白修。等hydration(客戶端激活)完后,才
返回請求的數(shù)據(jù)重斑。

也不知道是nuxt3的bug兵睛,還是本身就是這樣的機(jī)制。

方法參數(shù)和返回的數(shù)據(jù)具體介紹可以去官網(wǎng)查看

.$fetch
這個(gè)方法就是一個(gè)純粹的網(wǎng)絡(luò)接口請求的方式窥浪。也是官網(wǎng)推薦的代替使用axios的方法祖很。

<!-- 示例 -->
<script>
export default defineNuxtComponent({
  fetchKey: 'hello',
  async asyncData () {
    return {
      hello: await $fetch('/api/hello')
    }
  }
})
</script>

開發(fā)環(huán)境配置網(wǎng)絡(luò)代理

官網(wǎng)文檔里雖然沒有明確說明接口訪問代理如何配置。但提供了配置nitro的入口寒矿。
由于nuxt3內(nèi)置使用的是nitro服務(wù)器突琳,所以配置代理的話需要查看nitro的官網(wǎng)文檔

假如你的springboot服務(wù)器地址是 http://127.0.0.1:9090/ 則可以在nuxt.config.ts中添加如何配置即可。


nitro: {
        devProxy: {
            "/api": {
                target: 'http://127.0.0.1:9090/',
                prependPath: true,
                changeOrigin: true,
            }

        }
    }

這樣在本地開發(fā)調(diào)試的時(shí)候符相,就可以在瀏覽器上成功訪問springboot的接口拆融。
但奇怪的時(shí),server 端的接口請求沒有走這個(gè)代理啊终。所以不得不使用原始的接口地址镜豹。
考慮到代碼復(fù)用,所以就寫了工具方法

// utils.js
export default {
    getBaseUrl() {
        if (process.server) {
            return "http://127.0.0.1:9090/"
        } else {
            return "/api/"
        }
    }
}

使用的示例:

<script setup>
const { data: count } = await $fetch('/api/count', {
    baseURL: myutils.getBaseUrl()
})
</script>

這樣在server和client都可以調(diào)用同一個(gè)接口了蓝牲。

生產(chǎn)環(huán)境部署時(shí)的nginx配置趟脂。

在部署的時(shí)候,在服務(wù)器內(nèi)網(wǎng)啟動nuxt3服務(wù)和springboot服務(wù)后例衍,
然后用nginx配置從外網(wǎng)訪問昔期。
配置如下:

server {
    listen 80;
    if ($host != 'xxxx') {
        return 403;
    }
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location /api {
        proxy_pass http://localhost:9090/;
    }
    location / {
        proxy_pass http://localhost:3000/;
    }

    error_page 404 /404.html;
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    
}

這樣就可以在外網(wǎng)正常訪問了。




版權(quán)聲明:本文為凸然網(wǎng)站的原創(chuàng)文章佛玄,遵循CC 4.0 BY-SA版權(quán)協(xié)議硼一,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:nuxt3中如何進(jìn)行網(wǎng)絡(luò)api接口請求

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梦抢,一起剝皮案震驚了整個(gè)濱河市般贼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奥吩,老刑警劉巖哼蛆,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異霞赫,居然都是意外死亡腮介,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門绩脆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萤厅,“玉大人橄抹,你說我怎么就攤上這事靴迫√栉叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵玉锌,是天一觀的道長名挥。 經(jīng)常有香客問我,道長主守,這世上最難降的妖魔是什么禀倔? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮参淫,結(jié)果婚禮上救湖,老公的妹妹穿的比我還像新娘。我一直安慰自己涎才,他們只是感情好鞋既,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耍铜,像睡著了一般邑闺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棕兼,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天陡舅,我揣著相機(jī)與錄音,去河邊找鬼伴挚。 笑死靶衍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茎芋。 我是一名探鬼主播颅眶,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼败徊!你這毒婦竟也來了帚呼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤皱蹦,失蹤者是張志新(化名)和其女友劉穎煤杀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沪哺,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沈自,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辜妓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枯途。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忌怎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酪夷,到底是詐尸還是另有隱情榴啸,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布晚岭,位于F島的核電站鸥印,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坦报。R本人自食惡果不足惜库说,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望片择。 院中可真熱鬧潜的,春花似錦、人聲如沸字管。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纤掸。三九已至脐供,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間借跪,已是汗流浹背政己。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掏愁,地道東北人歇由。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像果港,于是被迫代替她去往敵國和親沦泌。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容