什么是 Next.js 中的 API 路由?

Next.js 的 API 路由功能允許開發(fā)者創(chuàng)建服務(wù)器端端點(diǎn),用于處理表單提交、數(shù)據(jù)庫查詢或外部 API 調(diào)用等操作。這些路由位于 /pages/api 目錄中,可響應(yīng)多種 HTTP 方法,例如 GETPOSTPUTDELETE

API 路由的主要特點(diǎn)


示例:創(chuàng)建一個簡單的 API 路由

以下是一個在 Next.js 中創(chuàng)建簡單 API 路由的示例,該路由會返回一個包含消息的 JSON 響應(yīng)。

創(chuàng)建 API 路由的步驟

  1. 在 Next.js 項(xiàng)目的 pages 目錄下,創(chuàng)建一個名為 api 的新文件夾(如果尚未存在)。
  2. api 文件夾中創(chuàng)建一個新的文件,例如 hello.js,并添加以下代碼:

    export default function handler(req, res) {
       res.status(200).json({ message: "Hello, World!" });
    }

在上述示例中,handler 函數(shù)接收兩個參數(shù):req(請求對象)和 res(響應(yīng)對象)。它返回一個狀態(tài)碼為 200 的響應(yīng),并包含一個 JSON 對象作為消息。

訪問 API 路由

創(chuàng)建 API 路由后,運(yùn)行 Next.js 應(yīng)用程序時,可以通過以下 URL 訪問該路由:

http://localhost:3000/api/hello

訪問該 URL 時,您將看到如下響應(yīng):

{
    "message": "Hello, World!"
}

處理不同的 HTTP 方法

在 Next.js 的 API 路由中,可以在一個路由中處理多種 HTTP 方法,例如 GETPOSTPUTDELETE。以下是一個示例,展示如何處理 GETPOST 請求。

示例:處理 GET 和 POST 請求

以下代碼擴(kuò)展了前面的示例,能夠分別處理 GETPOST 請求:

export default function handler(req, res) {
    if (req.method === "GET") {
        res.status(200).json({ message: "您發(fā)送了一個 GET 請求" });
    } else if (req.method === "POST") {
        const { name } = req.body;
        res.status(200).json({ message: 你好,${name}! });
    } else {
        res.status(405).json({ message: "方法不允許" });
    }
}

在此示例中:


示例:使用 Fetch 調(diào)用 API

您可以從客戶端使用 Fetch API 與上述 API 路由交互。以下是一個在 Next.js 中的 React 組件中調(diào)用 API 的示例:

import { useState } from "react";

export default function MyComponent() {
    const [name, setName] = useState("");
    const [responseMessage, setResponseMessage] = useState("");    const handleSubmit = async () => {
        const res = await fetch("/api/hello", {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify({ name }),
        });
        const data = await res.json();
        setResponseMessage(data.message);
    };    return (
        
setName(e.target.value)} placeholder="輸入您的姓名" />

{responseMessage}

); }

在此組件中:


解析請求正文

默認(rèn)情況下,Next.js 不會自動解析傳入請求的正文。以下是處理不同類型請求正文的示例:

示例:處理 JSON 請求

對于 JSON 數(shù)據(jù),如果請求包含正確的 Content-Type 標(biāo)頭(application/json),則可以直接使用 req.body

export default function handler(req, res) {
    if (req.method === "POST") {
        const { name } = req.body; // 自動解析 JSON
        res.status(200).json({ message: 你好,${name}! });
    }
}

示例:處理 URL 編碼的表單數(shù)據(jù)

如果表單以 application/x-www-form-urlencoded 提交,則需要手動解析請求正文。以下是一個示例:

import { parse } from "querystring";

export default function handler(req, res) {
    if (req.method === "POST") {
        let body = "";
        req.on("data", (chunk) => {
            body += chunk.toString(); // 將緩沖區(qū)轉(zhuǎn)換為字符串
        });
        req.on("end", () => {
            const parsedBody = parse(body); // 解析 URL 編碼的正文
            res.status(200).json({ message: 你好,${parsedBody.name}! });
        });
    }
}

安全注意事項(xiàng)

在創(chuàng)建 API 路由時,請務(wù)必遵循以下安全最佳實(shí)踐:


結(jié)論

Next.js 的 API 路由功能為開發(fā)者提供了一個強(qiáng)大的工具,用于創(chuàng)建服務(wù)器端端點(diǎn),處理表單提交、數(shù)據(jù)庫查詢或外部 API 調(diào)用等操作。通過 /pages/api 目錄中的文件,您可以輕松構(gòu)建支持多種 HTTP 方法的后端服務(wù)。結(jié)合安全最佳實(shí)踐,您可以利用 Next.js 構(gòu)建高效且安全的全棧應(yīng)用程序

原文鏈接: https://www.learncodepro.com/blog/next.js-api-routes-a-comprehensive-guide
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
返回頂部
上一篇
Next.js API Routes 與 Server Actions:如何選擇及其原因解析
下一篇
使用Next.js構(gòu)建API:最佳實(shí)踐與示例
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
亚洲一级片在线观看| 韩国一区二区三区| 综合精品久久久| 91婷婷韩国欧美一区二区| 国产精品国产三级国产aⅴ原创 | 国产精品视频线看| 国产91对白在线观看九色| 久久久国产精品麻豆| 国产在线看一区| 欧美大片免费久久精品三p | 午夜精品久久久久影视| 久久精品一区四区| 一本色道**综合亚洲精品蜜桃冫| 亚洲高清不卡在线观看| 在线免费视频一区二区| 高清久久久久久| 午夜精品久久久久久久久久久| 国产欧美日韩三区| 欧美日韩国产精品自在自线| 日韩写真欧美这视频| 色天天综合久久久久综合片| 成人免费视频一区二区| 免费xxxx性欧美18vr| 亚洲一区二区三区四区五区中文 | 国产视频911| 综合色天天鬼久久鬼色| 91麻豆精品国产91久久久资源速度 | 日韩午夜激情av| 国产尤物一区二区| 久久er99精品| 亚洲va天堂va国产va久| 亚洲三级小视频| 日韩欧美国产成人一区二区| 午夜一区二区三区视频| 91精品国产一区二区| 欧美曰成人黄网| 在线观看视频91| 欧美人妖巨大在线| 日韩一级欧美一级| 国产精品无人区| 一区二区三区在线观看网站| 日韩中文字幕区一区有砖一区| 国产精品色呦呦| 亚洲成人动漫在线免费观看| 日韩精品三区四区| 国产大片一区二区| 成人免费黄色在线| 欧美日韩高清不卡| 精品国产乱码久久久久久老虎| 中文字幕免费一区| 偷偷要91色婷婷| 色猫猫国产区一区二在线视频| 免费人成网站在线观看欧美高清| 国产精品丝袜一区| 亚洲人成在线观看一区二区| 老司机午夜精品| 欧美日韩国产免费| 亚洲国产精品二十页| 婷婷成人综合网| 欧美大片拔萝卜| 91丨porny丨在线| 亚洲制服丝袜一区| 久久精品免费在线观看| 日日夜夜精品视频天天综合网| 麻豆91免费看| 成人欧美一区二区三区视频网页 | 精品一区二区影视| 日韩欧美国产一区二区三区| 玉足女爽爽91| 久久久www成人免费毛片麻豆| 日本韩国视频一区二区| 成人激情视频网站| 亚洲精品中文在线影院| 99国产精品一区| 日日夜夜精品免费视频| 国产精品污www在线观看| 亚洲国产精品人人做人人爽| 日韩欧美成人一区二区| 成人高清视频在线观看| 午夜在线电影亚洲一区| 91超碰这里只有精品国产| 国产美女av一区二区三区| 中文字幕一区二区三区四区| 欧美色综合网站| 盗摄精品av一区二区三区| 午夜av一区二区三区| 国产精品久久久久久久第一福利 | 中文字幕第一页久久| 欧美日韩国产另类不卡| 成人在线视频一区二区| 精品综合久久久久久8888| 欧美午夜精品久久久久久超碰| 国产福利91精品| 国产综合久久久久影院| 日韩av电影天堂| 国产精品免费免费| 依依成人综合视频| 天堂精品中文字幕在线| 理论电影国产精品| 国产精品亚洲专一区二区三区| 亚洲人一二三区| 黑人巨大精品欧美一区| 色播五月激情综合网| 久久天天做天天爱综合色| 亚洲精品久久久久久国产精华液| 91精品国产麻豆| 亚洲男人的天堂在线aⅴ视频| 日韩精品乱码免费| 欧美亚洲国产怡红院影院| 国产日韩欧美精品电影三级在线| 亚洲中国最大av网站| 国产91综合网| 国产女主播视频一区二区| 视频一区视频二区在线观看| 91美女福利视频| 欧美激情在线看| 99久久精品免费精品国产| 欧美极品另类videosde| 国产激情视频一区二区三区欧美| 这里只有精品视频在线观看| 亚洲va欧美va人人爽午夜| 欧美伊人久久大香线蕉综合69| 亚洲欧洲av一区二区三区久久| 成人永久免费视频| 亚洲男同性视频| 欧美一二三区精品| 激情国产一区二区| 欧美精品777| 成人午夜大片免费观看| 精品美女被调教视频大全网站| 狠狠色丁香婷综合久久| 国产视频911| 精品视频在线免费看| 精品一区二区三区欧美| 中文字幕亚洲电影| 欧美一级生活片| www.日韩精品| 狠狠久久亚洲欧美| 亚洲最快最全在线视频| 国产日产欧产精品推荐色| 国产东北露脸精品视频| 激情欧美一区二区| 一区二区三区蜜桃网| 亚洲精品在线电影| 欧美自拍偷拍一区| 成人小视频免费观看| 久久99国产精品成人| 视频一区在线视频| 精品国产精品一区二区夜夜嗨| 欧美日韩成人在线一区| 亚洲18色成人| 日韩黄色小视频| 亚洲电影第三页| 日产国产欧美视频一区精品| 亚洲成人免费影院| 亚洲国产欧美在线| 日韩一区二区三区在线观看| 亚洲va国产天堂va久久en| 亚洲福利一二三区| 日本亚洲电影天堂| 九九热在线视频观看这里只有精品| 日韩三级视频中文字幕| 欧美成人性战久久| 国产精品美女一区二区三区| 亚洲日本丝袜连裤袜办公室| 午夜久久久影院| 国产精品66部| 91视频xxxx| 欧美美女喷水视频| 久久久不卡网国产精品二区| 亚洲成av人片一区二区梦乃| 国产精品1区2区| 日韩精品一区二区三区四区视频| 精品动漫一区二区三区在线观看| 亚洲欧美激情插| av电影在线观看不卡| 中文字幕一区二区三中文字幕| 国产在线不卡一区| 国产丝袜美腿一区二区三区| 天堂资源在线中文精品| 欧美男生操女生| 亚洲综合图片区| 91亚洲国产成人精品一区二三| 日韩免费看的电影| 亚洲影视在线播放| 欧美日韩黄色一区二区| 亚洲人被黑人高潮完整版| 成人永久aaa| 亚洲欧美电影院| 91精品在线免费观看| 九色综合狠狠综合久久| 精品少妇一区二区三区在线视频| 久久精品国产免费| 久久久久久亚洲综合| 99综合影院在线| 美女一区二区在线观看| 欧美韩日一区二区三区四区| 欧美日韩在线亚洲一区蜜芽| 精品一区二区三区av| 亚洲一区电影777|