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

react框架next.js學習之API?路由篇詳解

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

正文

next.js 作為最熱門的 react 框架,不過這么久了好像國內使用率一直不太高。最近在研究做個小項目正好做下筆記,有興趣的可以一起來學習。

next.js 首頁標榜的 12 個特性之一就是 API routes,簡單的說就是可以 next.js 直接寫 node 代碼作為后端服務來運行。因此我們可以直接使用 next.js 直接維護一個全棧項目,聽起來很香的樣子。

使用方式

next.js 中使用文件路徑作為路由,所以在 API routes 中也是一樣,一般的頁面文件我們會放在 pages 下,而 API routes 文件我們則需要放在 pages/api 下,emmm,其實我覺得這個設計有點奇怪,為啥不是在外層增加一個 server 或者 api 的文件夾呢,放在 pages 下面感覺怪怪的。而請求時,需要請求對應的 /api/ 下的文件地址,emmm,好吧,真的挺奇怪的。

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

API 路由匹配

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

pages/api/route.js

pages/api/route/[param].js

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

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

當請求過來進行匹配時, next.js 將會按照從上到下的優(yōu)先級來匹配應該處理的路由,比如上面三個文件同時存在,那么發(fā)送到 /api/route 的請求將會從被第一個文件所處理,而 /api/route/a 的請求會被第二個文件所處理,剩余的請求才會進入第三個文件中處理。

API 處理

而在處理文件中,會調用默認的導出函數(shù)來處理請求:

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

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

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

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

而在 req 中則擴展了以下幾個常用屬性:

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

是不是很熟悉,沒錯就是 express.js 的一些功能。

API 配置

除了 export 默認的處理函數(shù)處理請求外,還可 export 一個 config 對象來配置:

export const config = {
    api: {
        // 請求體處理
        bodyParser: {
            sizeLimit: '1mb'
        },
        // 響應體的大小限制
        responseLimit: '8mb',
        // 用于指定請求是否被外部服務處理,這個暫時還沒搞清楚是怎么工作的,等研究完了再來更新
        externalResolver: true
    }
};

邊緣計算支持

此外,next.jsAPI routes 還支持最近很火的邊緣計算,不過邊緣計算的運行時和 node 運行時差異較大,需要注意改動。由于暫時對這方面沒有研究,不做過多深入。

自定義 API

除了默認的請求處理,還可以借助外部 server 來處理請求,比如 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;

注意點

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

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

總結

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

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

以上就是react框架next.js學習之API 路由篇詳解的詳細內容,更多關于react框架next.js API路由的資料請關注腳本之家其它相關文章!

相關文章

  • 一文教你如何避免React中常見的8個錯誤

    一文教你如何避免React中常見的8個錯誤

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

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

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

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

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

    react render的原理及觸發(fā)時機說明

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

    如何在 React 中調用多個 onClick 函數(shù)

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

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

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

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

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

    react 父子組件之間通訊props

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

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

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

    React實現(xiàn)二級聯(lián)動(左右聯(lián)動)

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

最新評論

游戏| 鄂尔多斯市| 柳河县| 葵青区| 林西县| 新竹县| 黄大仙区| 祁门县| 华亭县| 华容县| 蕲春县| 东辽县| 莒南县| 仁寿县| 金川县| 内江市| 赤水市| 沾益县| 宜州市| 龙海市| 锡林浩特市| 同仁县| 工布江达县| 铜川市| 富平县| 青州市| 安泽县| 南开区| 甘孜| 宁夏| 利川市| 峡江县| 留坝县| 红原县| 响水县| 白山市| 寻甸| 松滋市| 长阳| 周宁县| 望谟县|