并非每個(gè)終端節(jié)點(diǎn)都會(huì)使用所有這些功能。例如,終端節(jié)點(diǎn)可能是 RESTful 服務(wù)的一部分,該服務(wù)不為單個(gè) API 實(shí)現(xiàn)單獨(dú)的服務(wù)名稱,或者不包含版本號(hào)(這對(duì)于供內(nèi)部使用的 API 來說很常見)。

主機(jī): 托管 RESTful 服務(wù)的服務(wù)器的網(wǎng)絡(luò)位置。包括協(xié)議(HTTP 或 HTTPS)。

服務(wù): 擁有多項(xiàng)服務(wù)的公司需要在不同的地址提供每個(gè) API。在上面的示例中,有一個(gè) API(包含用于返回超級(jí)英雄列表的終端節(jié)點(diǎn),但也可能包含其他與超級(jí)英雄相關(guān)的終端節(jié)點(diǎn) — 例如,返回超級(jí)英雄宇宙列表的終端節(jié)點(diǎn),例如“Marvel”或“DC”)。除了這個(gè) API 之外,同一提供者還可能提供另一個(gè) API(帶有端點(diǎn) — 可以返回如“Snow White”、“Cinderella”等童話人物的信息)。

API 版本: API 版本用于跟蹤對(duì) API 的更改。API 定期更新是正常的,但當(dāng)出現(xiàn)重大更改時(shí),即需要指定新的 API 版本(例如“v2”)時(shí)。用戶可以繼續(xù)調(diào)用 “v1” 終端節(jié)點(diǎn),直到他們明確升級(jí)到 “v2” 并修復(fù)任何重大更改。

資源類型:資源是一系列相關(guān)信息。例如,超級(jí)英雄資源包含有關(guān)特定超級(jí)英雄的屬性列表,例如他們來自哪里以及他們擁有哪些超能力。終端節(jié)點(diǎn)(末尾沒有任何資源標(biāo)識(shí)符)是一個(gè)列表終端節(jié)點(diǎn),它返回一個(gè)超級(jí)英雄列表,每個(gè)超級(jí)英雄都包含一個(gè)唯一的資源標(biāo)識(shí)符。

資源標(biāo)識(shí)符:資源標(biāo)識(shí)符是用于檢索特定資源信息的唯一標(biāo)識(shí)符,通常位于終端節(jié)點(diǎn) URL 的末尾。例如,如果 Superman 具有唯一 ID “1234”,則調(diào)用將返回有關(guān) Superman 的信息。如果您不知道正確的資源標(biāo)識(shí)符,可以通過調(diào)用上面的列表終端節(jié)點(diǎn)來查找。

查詢字符串參數(shù):您還可以在請(qǐng)求信息列表時(shí)將查詢字符串參數(shù)添加到請(qǐng)求的末尾。這些通常用于從結(jié)果中對(duì)列表進(jìn)行排序或篩選。在上面的示例中,該參數(shù)用于篩選目的:確保僅返回有關(guān)特定超級(jí)英雄的某些字段。在這種情況下,僅返回 and 字段,并保留其他字段。

REST API 請(qǐng)求剖析

API 端點(diǎn)只是 REST API 請(qǐng)求的一部分。在編寫需要與 REST API 交互的代碼時(shí),您應(yīng)該了解請(qǐng)求的四個(gè)主要組件:終端節(jié)點(diǎn)、HTTP 方法、標(biāo)頭和請(qǐng)求正文。

HTTP 方法

對(duì) REST API 端點(diǎn)的所有請(qǐng)求都包含 HTTP 方法。用于與 REST API 端點(diǎn)交互的最常見方法是:

例如,要讀取 Superman 的記錄,您需要向該端點(diǎn)發(fā)送 HTTP GET 請(qǐng)求。但是,如果要?jiǎng)h除他的記錄,您需要向相同的端點(diǎn)(標(biāo)識(shí)資源的 URL)發(fā)送 HTTP DELETE 請(qǐng)求。HTTP 方法指示要執(zhí)行的操作,端點(diǎn)標(biāo)識(shí)操作將受影響的資源。

HTTP 標(biāo)頭

HTTP 標(biāo)頭是隨 API 請(qǐng)求一起發(fā)送的鍵值對(duì),用于向服務(wù)器提供額外信息。有時(shí)它們會(huì)自動(dòng)添加到請(qǐng)求中,但有時(shí)您必須自己定義它們。以下是使用 cURL 添加到 API 請(qǐng)求的標(biāo)頭示例:Content-Type

curl -H "Content-Type: application/json" https://example.com/api/

如果您使用 Postman(一個(gè)用于測(cè)試 REST API 的漂亮圖形工具),這可能會(huì)自動(dòng)為您生成一些標(biāo)頭。在下面的示例中,除 1 個(gè)標(biāo)頭外的所有標(biāo)頭都是自動(dòng)生成的:

發(fā)送到 REST API 的最常見標(biāo)頭是:

授權(quán)標(biāo)頭的一個(gè)示例是 bearer token 選項(xiàng)。如果要向需要不記名令牌的 API 發(fā)送請(qǐng)求,可以在標(biāo)頭中發(fā)送請(qǐng)求,如下所示:

請(qǐng)求正文

在創(chuàng)建或更新資源時(shí),您需要發(fā)送需要存儲(chǔ)的任何新數(shù)據(jù)。這應(yīng)該在請(qǐng)求正文中發(fā)送。您還需要告訴 API 您發(fā)送數(shù)據(jù)的格式 — 例如 JSON。下面介紹如何使用 Postman 發(fā)送帶有 JSON 正文的 POST 請(qǐng)求,其中包含新的超級(jí)英雄超人,并包含與他相關(guān)的不同類型的信息。

REST API 響應(yīng)剖析

REST API 響應(yīng)應(yīng)包含:

REST API JSON 響應(yīng)示例

1. GET 返回以下 JSON:

2. POST(以及請(qǐng)求正文中的數(shù)據(jù))返回以下 JSON:

3. DELETE(假設(shè)此資源存在)返回以下 JSON:

如何使用 RESTful API 創(chuàng)建、讀取、更新和刪除數(shù)據(jù)

要完全了解如何使用 REST API 創(chuàng)建、讀取、更新和刪除數(shù)據(jù),可以參考一些具體示例。我們將使用 Contentful API 來逐步引導(dǎo)您完成這些操作。如果您想深入學(xué)習(xí),可以免費(fèi)注冊(cè) Contentful。

注冊(cè)Contentful 帳戶并登錄后,您將自動(dòng)進(jìn)入一個(gè)空間,這是一個(gè)工作區(qū),您可以在其中編輯要發(fā)布到網(wǎng)站和應(yīng)用程序的所有內(nèi)容。

要開始與 Contentful REST API 交互,您需要一個(gè)用于身份驗(yàn)證的訪問令牌。要獲取您的訪問令牌,請(qǐng)轉(zhuǎn)到“設(shè)置”→“CMA 令牌”,然后單擊“創(chuàng)建個(gè)人訪問令牌”。為您的令牌命名,記下它,然后單擊 “Generate” 按鈕。現(xiàn)在復(fù)制您的訪問令牌并將其保存在安全的地方。

我們現(xiàn)在要檢查您的 API 密鑰是否有效。我們建議使用 Postman 來實(shí)現(xiàn)此目的。您需要向 CMA 令牌發(fā)出 GET 請(qǐng)求并傳入“Bearer Token”授權(quán)標(biāo)頭,如前所述。

這將返回 a 和一些 JSON。如果您滾動(dòng)瀏覽 JSON,您應(yīng)該能夠找到空間的 ID。復(fù)制它并將其保存在某個(gè)位置,因?yàn)槟谙乱徊街袝?huì)需要它。

使用 HTTP GET 讀取資源列表

為了演示如何使用 Contentful REST API,我們將練習(xí)讀取、創(chuàng)建、更新和刪除一些環(huán)境。

在 Contentful 中,環(huán)境是維護(hù)多個(gè)內(nèi)容版本的一種方式。每個(gè)帳戶都從一個(gè)名為 master 的默認(rèn)環(huán)境開始,但很快您將需要?jiǎng)?chuàng)建其他環(huán)境,例如沙盒環(huán)境,用于測(cè)試您希望處理的一些新內(nèi)容,而不會(huì)影響 master 環(huán)境。

要從 Contentful 讀取環(huán)境列表,請(qǐng)向以下對(duì)象發(fā)送 GET 請(qǐng)求:

https://api.contentful.com/spaces/{space_id}/environments

將 {space_id} 替換為您之前保存的空間 ID,并附加以下 HTTP 標(biāo)頭:

Authorization: Bearer <CMA_TOKEN>

將 <CMA_TOKEN> 替換為您的實(shí)際 CMA 令牌。

這將返回一些 JSON,其中包含環(huán)境列表和相關(guān)信息,以及 OK 狀態(tài)代碼。

使用 HTTP POST 創(chuàng)建新資源

要在 Contentful 中創(chuàng)建新的環(huán)境資源,請(qǐng)向以下對(duì)象發(fā)送 HTTP POST 請(qǐng)求:

https://api.contentful.com/spaces/{space_id}/environments

{space_id}替換為您之前保存的空間的 ID,并附加以下 HTTP 標(biāo)頭:

Authorization: Bearer <CMA_TOKEN>

Content-Type: application/vnd.contentful.management.v1+json

在請(qǐng)求正文中添加要?jiǎng)?chuàng)建的環(huán)境的名稱:

body: {

  "name": "My environment name"

}

這將在 Contentful 應(yīng)用程序中創(chuàng)建一個(gè)新環(huán)境,您可以通過使用瀏覽器登錄或調(diào)用空間的“列表環(huán)境”端點(diǎn)來查看該環(huán)境:

GET https://api.contentful.com/spaces/{space_id}/environments

當(dāng)您使用 HTTP POST 在 Contentful 中創(chuàng)建資源時(shí),它將具有自動(dòng)生成的 ID,或者您可以使用 HTTP PUT 方法自行指定一個(gè) ID 來創(chuàng)建資源。

使用 HTTP PUT 更新資源

我們將使用 HTTP PUT 請(qǐng)求通過更改名稱來更新 Contentful 中的環(huán)境。為此,請(qǐng)向以下 URL 發(fā)送 HTTP PUT 請(qǐng)求,其中 {environment_id} 是要更改名稱的環(huán)境的 ID,{space_id} 是空間的 ID:

https://api.contentful.com/spaces/{space_id}/environments/{environment_id}

使用以下 HTTP 標(biāo)頭:

Authorization: Bearer <CMA_TOKEN>

Content-Type: application/vnd.contentful.management.v1+json

并在請(qǐng)求正文中發(fā)送要?jiǎng)?chuàng)建的環(huán)境的名稱:

body: {

  "name": "My new environment name"

}

最后,您需要指定要更新的環(huán)境版本,方法是添加以下標(biāo)頭,并替換為正確的版本:

<existing_version>

X-Contentful-Version: <existing_version>

請(qǐng)注意,這是 Contentful REST API 特有的功能。在使用其他 REST API 進(jìn)行更新時(shí),您可能不需要做同樣的事情。但是,許多 REST API 添加了與此類似的額外功能,您將在閱讀其 API 文檔時(shí)發(fā)現(xiàn)這一點(diǎn)。

如果您不確定最新版本是什么,可以通過向同一終端節(jié)點(diǎn)發(fā)送 GET 請(qǐng)求來了解,響應(yīng)會(huì)通知您。

顯示 GET 請(qǐng)求的 Postman

使用 HTTP DELETE 刪除資源

要?jiǎng)h除 Contentful 中空間內(nèi)的特定環(huán)境,請(qǐng)向以下 URL 發(fā)送 HTTP DELETE 請(qǐng)求,其中 {space_id} 是空間的 ID,{environment_id} 是要?jiǎng)h除的環(huán)境的 ID:

https://api.contentful.com/spaces/{space_id}/environments/{environment_id}

并使用以下 HTTP 標(biāo)頭:

Authorization: Bearer <CMA_TOKEN>

REST API 總結(jié)

API 是一種使用 JavaScript、PHP、Python、Java、Ruby 和 C# 等編程語言在不同軟件服務(wù)之間進(jìn)行通信的方式。REST 是一組用于創(chuàng)建特定類型 API 的規(guī)則和準(zhǔn)則,并非所有 API 都是 RESTful API。

REST 代表 Representational State Transfer,特點(diǎn)包括:

瀏覽 Contentful API 文檔以鞏固您對(duì) REST API 的理解。

常見問題解答

常見問題解答

REST API 是什么意思?

REST API 是遵循 REST(表示性狀態(tài)傳輸)原則的 API,使系統(tǒng)之間能夠輕松通信。RESTful 系統(tǒng)在客戶端和服務(wù)器之間具有分離的關(guān)注點(diǎn),這意味著每個(gè)系統(tǒng)都可以彼此獨(dú)立地實(shí)現(xiàn)。REST API 是無狀態(tài)的,這意味著每個(gè) API 請(qǐng)求都完全獨(dú)立于任何以前的請(qǐng)求。

REST API 的工作原理是什么?

REST API 向客戶端公開端點(diǎn),允許它們調(diào)用服務(wù)器??蛻舳讼蚪K端節(jié)點(diǎn)發(fā)送 HTTP 請(qǐng)求,服務(wù)器接收請(qǐng)求。

在大多數(shù)情況下,一些身份驗(yàn)證詳細(xì)信息會(huì)隨請(qǐng)求一起發(fā)送,并且服務(wù)器會(huì)檢查是否允許客戶端發(fā)出請(qǐng)求。由于 RESTful 系統(tǒng)是無狀態(tài)的,因此需要對(duì)每個(gè)請(qǐng)求重新驗(yàn)證客戶端。

然后,服務(wù)器處理請(qǐng)求并返回響應(yīng),通常采用 JSON 或類似格式。它還返回 HTTP 狀態(tài)代碼以通知用戶成功或失敗。

為什么使用 REST API?

RESTful 服務(wù)允許在客戶端和服務(wù)器之間以及服務(wù)器的不同部分之間分離關(guān)注點(diǎn)。

REST API 易于使用 — 它們使用 HTTP 調(diào)用,這是 Web 的語言。開發(fā)人員已經(jīng)熟悉這一點(diǎn)。

REST API 也是可伸縮的,原因有兩個(gè):

如何找到更多同類API?

冪簡(jiǎn)集成是國內(nèi)領(lǐng)先的API集成管理平臺(tái),專注于為開發(fā)者提供全面、高效、易用的API集成解決方案。冪簡(jiǎn)API平臺(tái)可以通過以下兩種方式找到所需API:通過關(guān)鍵詞搜索API、或者從API Hub分類頁進(jìn)入尋找。

原文鏈接:https://www.contentful.com/blog/what-is-a-rest-api/

上一篇:

什么是 API Key 密鑰以及如何使用它們?

下一篇:

FastAPI是什么?快速上手指南
#你可能也喜歡這些API文章!

我們有何不同?

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

多API并行試用

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

查看全部API→
??

熱門場(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)