最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react框架next.js學(xué)習(xí)之API?路由篇詳解

 更新時(shí)間:2022年09月30日 14:34:26   作者:嘿嘿Z  
這篇文章主要為大家介紹了react框架next.js學(xué)習(xí)之API?路由篇詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

next.js 作為最熱門的 react 框架,不過(guò)這么久了好像國(guó)內(nèi)使用率一直不太高。最近在研究做個(gè)小項(xiàng)目正好做下筆記,有興趣的可以一起來(lái)學(xué)習(xí)。

next.js 首頁(yè)標(biāo)榜的 12 個(gè)特性之一就是 API routes,簡(jiǎn)單的說(shuō)就是可以 next.js 直接寫 node 代碼作為后端服務(wù)來(lái)運(yùn)行。因此我們可以直接使用 next.js 直接維護(hù)一個(gè)全棧項(xiàng)目,聽起來(lái)很香的樣子。

使用方式

next.js 中使用文件路徑作為路由,所以在 API routes 中也是一樣,一般的頁(yè)面文件我們會(huì)放在 pages 下,而 API routes 文件我們則需要放在 pages/api 下,emmm,其實(shí)我覺(jué)得這個(gè)設(shè)計(jì)有點(diǎn)奇怪,為啥不是在外層增加一個(gè) server 或者 api 的文件夾呢,放在 pages 下面感覺(jué)怪怪的。而請(qǐng)求時(shí),需要請(qǐng)求對(duì)應(yīng)的 /api/ 下的文件地址,emmm,好吧,真的挺奇怪的。

所以我們要新增一個(gè) API 只需要在 pages/api/ 目錄下新建一個(gè)文件即可。

API 路由匹配

API 的文件命名有三種方式:

pages/api/route.js

pages/api/route/[param].js

pages/api/route/[...slug].js

第一種很好理解,就是會(huì)處理發(fā)送到 /api/route 的請(qǐng)求,第二種會(huì)接受來(lái)自 /api/route/xxxx 的請(qǐng)求,并將 xxxx 作為參數(shù)放到 param 中,而第三種則是會(huì)接收所有的到 /api/route/ 下的請(qǐng)求,比如 /api/route/a/b/c 等。

當(dāng)請(qǐng)求過(guò)來(lái)進(jìn)行匹配時(shí), next.js 將會(huì)按照從上到下的優(yōu)先級(jí)來(lái)匹配應(yīng)該處理的路由,比如上面三個(gè)文件同時(shí)存在,那么發(fā)送到 /api/route 的請(qǐng)求將會(huì)從被第一個(gè)文件所處理,而 /api/route/a 的請(qǐng)求會(huì)被第二個(gè)文件所處理,剩余的請(qǐng)求才會(huì)進(jìn)入第三個(gè)文件中處理。

API 處理

而在處理文件中,會(huì)調(diào)用默認(rèn)的導(dǎo)出函數(shù)來(lái)處理請(qǐng)求:

export default function handler(req, res) {
    res.status(200).json({ foo: 'bar' });
}

如上代碼表示請(qǐng)求的響應(yīng)體 http 狀態(tài)碼為 200,響應(yīng)體中是一段 json

除了 nodejs 原生中包含的一些屬性和方法外,next 還在 res 中擴(kuò)展了以下幾個(gè)常用的方法:

  • res.status(code) 響應(yīng)的 http 狀態(tài)碼
  • res.json(body) json 響應(yīng)體
  • res.send(body) 其它響應(yīng)體,可以是 string、object、Buffer
  • res.redirect([status,] path) 重定向
  • res.revalidate(urlPath) 重新進(jìn)行校驗(yàn)

而在 req 中則擴(kuò)展了以下幾個(gè)常用屬性:

  • req.cookies 請(qǐng)求包含的 cookies
  • req.query 請(qǐng)求的 query 參數(shù)
  • req.body 請(qǐng)求體

是不是很熟悉,沒(méi)錯(cuò)就是 express.js 的一些功能。

API 配置

除了 export 默認(rèn)的處理函數(shù)處理請(qǐng)求外,還可 export 一個(gè) config 對(duì)象來(lái)配置:

export const config = {
    api: {
        // 請(qǐng)求體處理
        bodyParser: {
            sizeLimit: '1mb'
        },
        // 響應(yīng)體的大小限制
        responseLimit: '8mb',
        // 用于指定請(qǐng)求是否被外部服務(wù)處理,這個(gè)暫時(shí)還沒(méi)搞清楚是怎么工作的,等研究完了再來(lái)更新
        externalResolver: true
    }
};

邊緣計(jì)算支持

此外,next.jsAPI routes 還支持最近很火的邊緣計(jì)算,不過(guò)邊緣計(jì)算的運(yùn)行時(shí)和 node 運(yùn)行時(shí)差異較大,需要注意改動(dòng)。由于暫時(shí)對(duì)這方面沒(méi)有研究,不做過(guò)多深入。

自定義 API

除了默認(rèn)的請(qǐng)求處理,還可以借助外部 server 來(lái)處理請(qǐng)求,比如 graphql

import { createServer } from '@graphql-yoga/node';
const typeDefs = /* GraphQL */ `
    type Query {
        users: [User!]!
    }
    type User {
        name: String
    }
`;
const resolvers = {
    Query: {
        users() {
            return [{ name: 'Nextjs' }];
        }
    }
};
const server = createServer({
    schema: {
        typeDefs,
        resolvers
    },
    endpoint: '/api/graphql'
});
export default server;

注意點(diǎn)

另外需要注意的是,如果配置了 pageExtensions,API 文件的命名也會(huì)受影響。

還有如果同時(shí)存在 pages/api/route/[param].jspages/api/route/[param1].js 不知道會(huì)發(fā)什么什么,回頭有空試試。

總結(jié)

使用 next.jsAPI routes,我們可以直接在項(xiàng)目中編寫 nodejs 后端代碼,輕松完成全棧開發(fā)。

再多說(shuō)幾句,經(jīng)過(guò)這么多年的發(fā)展,前后端終于分離了,然而最近幾年,前端又開始干起后端的活,夢(mèng)回 phpjsp。古人云的好:風(fēng)水輪流轉(zhuǎn),前后不分家。

以上就是react框架next.js學(xué)習(xí)之API 路由篇詳解的詳細(xì)內(nèi)容,更多關(guān)于react框架next.js API路由的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文教你如何避免React中常見的8個(gè)錯(cuò)誤

    一文教你如何避免React中常見的8個(gè)錯(cuò)誤

    這篇文章主要來(lái)和大家一起分享在?React?開發(fā)中常見的一些錯(cuò)誤,以及如何避免這些錯(cuò)誤,理解這些問(wèn)題背后的細(xì)節(jié),防止犯下類似的錯(cuò)誤,需要的可以參考下
    2023-12-12
  • React使用Hooks從服務(wù)端獲取數(shù)據(jù)的完整指南

    React使用Hooks從服務(wù)端獲取數(shù)據(jù)的完整指南

    本文將從基礎(chǔ)到高級(jí)用法,詳細(xì)介紹如何在 React 項(xiàng)目中優(yōu)雅地使用 Hooks 進(jìn)行服務(wù)端數(shù)據(jù)獲取,涵蓋錯(cuò)誤處理、加載狀態(tài)、性能優(yōu)化等核心場(chǎng)景,并提供可直接復(fù)用的代碼模板,需要的朋友可以參考下
    2025-03-03
  • react項(xiàng)目使用json-server模擬接口獲取數(shù)據(jù)的操作方法

    react項(xiàng)目使用json-server模擬接口獲取數(shù)據(jù)的操作方法

    文章介紹了如何在React項(xiàng)目中使用json-server模擬接口并獲取數(shù)據(jù),首先安裝json-server,創(chuàng)建JSON格式的數(shù)據(jù)文件,并在package.json中添加啟動(dòng)命令,啟動(dòng)服務(wù)后,可以通過(guò)指定的路徑獲取模擬的數(shù)據(jù),感興趣的朋友一起看看吧
    2025-11-11
  • react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明

    react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明

    這篇文章主要介紹了react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 如何在 React 中調(diào)用多個(gè) onClick 函數(shù)

    如何在 React 中調(diào)用多個(gè) onClick 函數(shù)

    這篇文章主要介紹了如何在React中調(diào)用多個(gè)onClick函數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • React+valtio響應(yīng)式狀態(tài)管理

    React+valtio響應(yīng)式狀態(tài)管理

    Valtio是一個(gè)很輕量級(jí)的響應(yīng)式狀態(tài)管理庫(kù),使用外部狀態(tài)代理去驅(qū)動(dòng)React視圖來(lái)更新,本文主要介紹了React+valtio響應(yīng)式狀態(tài)管理,感興趣的可以了解一下
    2023-12-12
  • React大屏可視化腳手架教程示例

    React大屏可視化腳手架教程示例

    這篇文章主要為大家介紹了React大屏可視化腳手架教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • react 父子組件之間通訊props

    react 父子組件之間通訊props

    這篇文章主要介紹了react 父子組件之間通訊props,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • React項(xiàng)目中服務(wù)器端渲染SSR的實(shí)現(xiàn)與優(yōu)化詳解

    React項(xiàng)目中服務(wù)器端渲染SSR的實(shí)現(xiàn)與優(yōu)化詳解

    在傳統(tǒng)的 React 項(xiàng)目里,頁(yè)面的渲染工作是在瀏覽器里完成的,而服務(wù)器端渲染(SSR)則是讓服務(wù)器先把 React 組件渲染成 HTML 字符串,再把這個(gè) HTML 字符串發(fā)送給瀏覽器,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧
    2025-03-03
  • React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)(左右聯(lián)動(dòng))

    React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)(左右聯(lián)動(dòng))

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

曲阜市| 平谷区| 长阳| 肇州县| 土默特左旗| 昌黎县| 广西| 双柏县| 屯昌县| 正阳县| 棋牌| 蒙山县| 宜阳县| 邵阳市| 开阳县| 泗阳县| 开平市| 宁陵县| 凌源市| 松江区| 杂多县| 陇川县| 乐亭县| 株洲市| 安阳县| 宜兰市| 鹤壁市| 盐津县| 巫山县| 将乐县| 托里县| 洪江市| 卫辉市| 紫阳县| 通辽市| 通河县| 合肥市| 眉山市| 肃北| 石狮市| 临安市|