欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

正文

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

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

使用方式

next.js 中使用文件路徑作為路由,所以在 API routes 中也是一樣,一般的頁面文件我們會放在 pages 下,而 API routes 文件我們則需要放在 pages/api 下,emmm,其實(shí)我覺得這個設(shè)計(jì)有點(diǎn)奇怪,為啥不是在外層增加一個 server 或者 api 的文件夾呢,放在 pages 下面感覺怪怪的。而請求時,需要請求對應(yīng)的 /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 等。

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

API 處理

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

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

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

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

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

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

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

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

API 配置

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

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

邊緣計(jì)算支持

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

自定義 API

除了默認(rèn)的請求處理,還可以借助外部 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;

注意點(diǎn)

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

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

總結(jié)

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

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

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

相關(guān)文章

  • react執(zhí)行【npx create-react-app my-app】出現(xiàn)常見錯誤的解決辦法

    react執(zhí)行【npx create-react-app my-app】出現(xiàn)常見錯誤的解決辦法

    文章主要介紹了在使用npx創(chuàng)建React應(yīng)用時可能遇到的幾種常見錯誤及其解決方法,包括缺少依賴、網(wǎng)絡(luò)問題和npx解析錯誤等,并提供了相應(yīng)的解決措施,此外,還提到了使用騰訊云云產(chǎn)品來支持React應(yīng)用開發(fā)
    2024-11-11
  • react批量引入svg圖標(biāo)的方法

    react批量引入svg圖標(biāo)的方法

    這篇文章主要介紹了react批量引入svg圖標(biāo)的方法,在批量引入之前,我們需要安裝一個包并配置到typescript.json文件中,需要的朋友可以參考下
    2024-03-03
  • 詳解React??App.js?文件的結(jié)構(gòu)和作用

    詳解React??App.js?文件的結(jié)構(gòu)和作用

    在React應(yīng)用中,App.js文件通常是項(xiàng)目的根組件文件,它負(fù)責(zé)組織和渲染其他組件,是應(yīng)用的核心部分,本文將詳細(xì)介紹App.js文件的結(jié)構(gòu)、作用和最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • react源碼層分析協(xié)調(diào)與調(diào)度

    react源碼層分析協(xié)調(diào)與調(diào)度

    本文主要介紹了深入理解React協(xié)調(diào)與調(diào)度(Scheduler)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • React Hook中useState更新延遲問題及解決

    React Hook中useState更新延遲問題及解決

    這篇文章主要介紹了React Hook中useState更新延遲問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 手把手教您實(shí)現(xiàn)react異步加載高階組件

    手把手教您實(shí)現(xiàn)react異步加載高階組件

    這篇文章主要介紹了手把手教您實(shí)現(xiàn)react異步加載高階組件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • React實(shí)現(xiàn)圖片縮放的示例代碼

    React實(shí)現(xiàn)圖片縮放的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用React實(shí)現(xiàn)圖片縮放的功能,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以了解下
    2023-10-10
  • ReactQuery?渲染優(yōu)化示例詳解

    ReactQuery?渲染優(yōu)化示例詳解

    這篇文章主要為大家介紹了ReactQuery?渲染優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 一百多行代碼實(shí)現(xiàn)react拖拽hooks

    一百多行代碼實(shí)現(xiàn)react拖拽hooks

    這篇文章主要介紹了一百多行代碼實(shí)現(xiàn)react拖拽hooks,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • React 高階組件入門介紹

    React 高階組件入門介紹

    本篇文章主要介紹了React高階組件入門介紹,這篇文章中我們詳細(xì)的介紹了什么是高階組件,如何使用高階組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論