初識(shí) API:從靜態(tài)頁(yè)面到動(dòng)態(tài)交互

在了解如何創(chuàng)建 API 之前,我們先來(lái)區(qū)分 API 和傳統(tǒng)的 靜態(tài)頁(yè)面。靜態(tài)頁(yè)面雖在某些場(chǎng)景下有用,但它們的最大局限性是:每次訪問(wèn)時(shí)都返回相同的內(nèi)容。這意味著,對(duì)于想要為不同用戶提供個(gè)性化體驗(yàn)的應(yīng)用程序,單純依賴靜態(tài)頁(yè)面是遠(yuǎn)遠(yuǎn)不夠的。

API 的出現(xiàn)正好解決了這個(gè)問(wèn)題。通過(guò) API,你可以根據(jù)每次請(qǐng)求的不同,動(dòng)態(tài)地生成和返回?cái)?shù)據(jù),實(shí)現(xiàn)個(gè)性化的交互體驗(yàn)。

例如,當(dāng)你在一個(gè)電商網(wǎng)站瀏覽商品時(shí),網(wǎng)站需要根據(jù)你的瀏覽歷史、購(gòu)物車(chē)等信息,為你推薦相關(guān)商品。背后實(shí)現(xiàn)個(gè)性化推薦的技術(shù)就是通過(guò) API 獲取和處理用戶的個(gè)人信息,從而為每個(gè)用戶提供更符合其需求的內(nèi)容。

快速上手:使用 Next.js 創(chuàng)建你的第一個(gè) API

為了讓你快速體驗(yàn)創(chuàng)建 API 的過(guò)程,我們將使用 Next.js 框架來(lái)構(gòu)建 API。Next.js 是一個(gè)基于 React 的服務(wù)器端渲染框架,提供了強(qiáng)大的 API 路由功能,能夠讓我們快速構(gòu)建功能豐富的 API。

第一步:項(xiàng)目初始化

首先,確保你已經(jīng)安裝了 Node.jsnpm(Node Package Manager)。如果你還沒(méi)有安裝,可以從官網(wǎng)下載并按照指引進(jìn)行安裝。

然后,打開(kāi)終端,創(chuàng)建一個(gè)新的項(xiàng)目目錄,并初始化項(xiàng)目:

mkdir my-api-project
cd my-api-project
npm init -y

接著,安裝 Next.js 以及必要的依賴:

npm install next react react-dom

第二步:創(chuàng)建 API

在項(xiàng)目根目錄下,創(chuàng)建一個(gè) pages 文件夾。在 Next.js 項(xiàng)目中,這個(gè)文件夾用于存放所有的頁(yè)面文件。然后,在 pages 文件夾內(nèi)再創(chuàng)建一個(gè)名為 api 的文件夾。這個(gè) api 文件夾將用于存放我們的 API 文件。

接下來(lái),在 api 文件夾中創(chuàng)建一個(gè)名為 tempo.js 的文件,作為我們第一個(gè)簡(jiǎn)單的 API:

// pages/api/tempo.js
export default function handler(req, res) {
  const date = new Date();
  res.status(200).json({ date: date.toGMTString() });
}

第三步:運(yùn)行開(kāi)發(fā)服務(wù)器

運(yùn)行開(kāi)發(fā)服務(wù)器并訪問(wèn)你的 API:

npx next dev

打開(kāi)瀏覽器,訪問(wèn) http://localhost:3000/api/tempo,你將看到返回的 JSON 數(shù)據(jù),其中包含當(dāng)前的時(shí)間。恭喜你,你已經(jīng)成功創(chuàng)建了第一個(gè) API!

部署到生產(chǎn)環(huán)境:讓世界看到你的 API

創(chuàng)建 API 只是第一步,為了讓其他人也能訪問(wèn)你的 API,你需要將其部署到生產(chǎn)環(huán)境中。這里,我們選擇使用 Vercel 作為部署平臺(tái)。Vercel 提供了簡(jiǎn)單易用的部署流程,并且其免費(fèi)套餐對(duì)于中小型項(xiàng)目來(lái)說(shuō)已經(jīng)足夠強(qiáng)大。

部署步驟


首先,在 Vercel 官網(wǎng)注冊(cè)一個(gè)賬號(hào)。注冊(cè)完成后,點(diǎn)擊 “New Project” 按鈕,創(chuàng)建一個(gè)新的項(xiàng)目。在項(xiàng)目創(chuàng)建過(guò)程中,你需要將你的項(xiàng)目代碼托管到 GitHub 上。如果你還沒(méi)有將項(xiàng)目推送到 GitHub,可以按照以下步驟操作:

git init
git add .
git commit -m "initial commit"
git remote add origin < your-github-repository-url >
git push -u origin main

Vercel 項(xiàng)目創(chuàng)建頁(yè)面,選擇你的 GitHub 倉(cāng)庫(kù),并按照指引完成項(xiàng)目創(chuàng)建。創(chuàng)建完成后,Vercel 會(huì)自動(dòng)開(kāi)始部署你的項(xiàng)目。部署完成后,你將獲得一個(gè)部署鏈接,任何人都可以通過(guò)這個(gè)鏈接訪問(wèn)你的 API。

安全與性能優(yōu)化:保護(hù)你的 API 并提升用戶體驗(yàn)

在實(shí)際應(yīng)用中,API 需要處理一些敏感信息,如密碼、訪問(wèn)令牌等。為了保護(hù)這些信息,我們需要使用 環(huán)境變量 來(lái)存儲(chǔ)它們,而不是將它們直接寫(xiě)在代碼中。

使用環(huán)境變量保護(hù)敏感信息

Next.js 支持通過(guò) .env 文件來(lái)配置環(huán)境變量。在項(xiàng)目根目錄下創(chuàng)建一個(gè) .env 文件,并添加你的環(huán)境變量:

CONVERTKIT_API_SECRET=your_api_secret_key

然后,在你的 API 文件中,通過(guò) process.env 來(lái)訪問(wèn)這些環(huán)境變量:

// pages/api/tempo.js
export default async function handler(req, res) {
  const apiSecret = process.env.CONVERTKIT_API_SECRET;
  const response = await fetch(`https://api.convertkit.com/v3/subscribers?api_secret=${apiSecret}`);
  const data = await response.json();
  res.status(200).json({ date: new Date().toGMTString(), subscribers: data.total_subscribers });
}

性能優(yōu)化:緩存你的 API 響應(yīng)

為了提升 API 的性能,我們還可以利用 Vercel 的緩存功能。通過(guò)設(shè)置響應(yīng)頭中的 Cache-Control 屬性,可以實(shí)現(xiàn)緩存控制。例如,我們可以設(shè)置 API 的響應(yīng)在服務(wù)器端緩存 10 秒,在這期間,Vercel 會(huì)直接從緩存中返回?cái)?shù)據(jù),而無(wú)需重新請(qǐng)求后端。

// pages/api/tempo.js
export default async function handler(req, res) {
  const apiSecret = process.env.CONVERTKIT_API_SECRET;
  const response = await fetch(`https://api.convertkit.com/v3/subscribers?api_secret=${apiSecret}`);
  const data = await response.json();
  res
    .status(200)
    .setHeader('Cache-Control', 'public, s-maxage=10, stale-while-revalidate')
    .json({ date: new Date().toGMTString(), subscribers: data.total_subscribers });
}

總結(jié):開(kāi)啟你的 API 之旅

通過(guò)本文,你已經(jīng)學(xué)會(huì)了如何使用 Next.js 創(chuàng)建一個(gè)簡(jiǎn)單的 API,并將其部署到生產(chǎn)環(huán)境中。同時(shí),我們也探討了如何使用 環(huán)境變量 保護(hù)敏感信息,以及如何通過(guò)緩存優(yōu)化 API 的性能。這些知識(shí)為你構(gòu)建更復(fù)雜、更安全的 API 奠定了堅(jiān)實(shí)的基礎(chǔ)。

現(xiàn)在,你可以開(kāi)始嘗試構(gòu)建自己的 API 了。無(wú)論是為你的個(gè)人項(xiàng)目提供數(shù)據(jù)支持,還是為你的公司業(yè)務(wù)打造定制化的 API,這些技能都將為你打開(kāi)一扇新的大門(mén)。勇敢地邁出第一步,讓你的創(chuàng)意通過(guò) API 的形式,與世界分享!

原文引自YouTube視頻:https://www.youtube.com/watch?v=f7JWDLFhR_c

上一篇:

React 狀態(tài)管理:從基礎(chǔ)到 Context API 實(shí)戰(zhàn)

下一篇:

MCP 與 API:探索大語(yǔ)言模型與外部數(shù)據(jù)源的連接方式
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)