我的文章在這裡交叉發布
REST(Re示範 State T傳輸)API 是現代 Web 開發的支柱。本文將詳細介紹如何建立和使用現代 REST API、製作 API 時要考慮哪些設計決策以及作為 REST 基礎的理論。
實用指南
本節深入探討如何將 REST API 與 HTTP 結合使用,涵蓋端點、方法、請求和回應。您將找到開始進行 API 呼叫和在專案中應用 REST 所需的一切。
如何建構 URI
一般來說,處理 URI 有兩種主要方法:
- 作為動作
- 作為資源
考慮以下兩個 URI:
- https://example.com/getUserData?id=1(操作)
- https://example.com/users/1(資源)
兩個範例都顯示我們檢索 id 為 1 的使用者的使用者資料。差別在於,在第一個範例中,路由 /getUserData 正在執行操作,而在第二個範例中,路由 /users/1 是資產,它並沒有表示正在執行什麼操作。我們可以說這種類型的 URI 充當名詞(因為它是一個事物而不是一個動作,即動詞)。
REST 模式要求我們嚴格使用 URI,如第二個範例。我們希望我們的 URI 是名詞,這樣我們就可以使用 HTTP 方法作為動詞來對這些名詞執行操作。例如,我們可以使用 HTTP 方法 GET 檢索有關 /users/1 的信息,但我們可以使用 PUT 更新相應用戶的信息,或使用 DELETE 完全刪除用戶。
關於 URI 需要注意的最後一件事是,與上面的範例一樣,當引用單一資源(例如本例中的單一使用者)時,URI 應以該資源的唯一識別碼結尾。引用給定類別中的所有資源時,應省略唯一識別碼。
- https://example.com/users/1 - 引用 id 為 1 的特定用戶
- https://example.com/users - 引用所有用戶,無論 id 為何
支持哪些行動
REST 支援4 個主要操作,我們使用縮寫CRUD 來記住它們:Create、Read、U 更新,D刪除。這些操作中的每一個都對應到一個我們可以用來執行該操作的 HTTP 方法。映射如下:
Action | HTTP Method |
---|---|
Create | POST |
Read | GET |
Update | PUT / PATCH |
Delete | DELETE |
支援的所有操作 URI 組合
每個 REST API 其實只是(至少)5-6 個路由。在我們的範例中,基本端點將是 /users,我們將假裝將其託管在 https://example.com 上。
-
取得 https://example.com/users
- Action:傳回所有使用者資產(每個資產為一個使用者)
- 請求正文:空
- 回應正文:使用者資產清單(作為 JSON 陣列)
-
GET https://example.com/users/[id] ([id] 是變數)
- 操作:僅傳回單一請求的使用者資產
- 請求正文:空
- 回應正文:僅具有符合ID的使用者資產(作為JSON)
-
發佈 https://example.com/users
- 操作:將一項使用者資產加入集合
- 請求正文:建立新使用者資產所需的所有資料(不需要特定格式,建議使用JSON)
- 回應正文:插入唯一 ID (作為 JSON) 的新建立的資產
-
PUT https://example.com/users/[id] ([id] 是變數)
- 操作:用給定資料完全取代一個現有使用者的資料
- 請求正文:取代現有使用者資料所需的所有數據,無論是否已更改(減去 id - 不需要特定格式,建議 JSON)
- 回應正文:具有匹配ID 的新更新資產(作為JSON)
-
(可選) PATCH https://example.com/users/[id] ([id] 是變數)
- 操作:用給定資料部分取代一個現有使用者的資料
- Request Body:只需要更新的資料(減 id - 不需要特定格式,建議 JSON)
- 回應正文:具有匹配ID 的新更新資產(作為JSON)
-
刪除 https://example.com/users/[id] ([id] 是變數)
- 操作:僅從使用者表中刪除一筆記錄
- 請求正文:無
- 回應正文:無(僅 HTTP 回應代碼)或剛刪除的具有匹配 ID 的資產中的資料(作為 JSON)
設計考慮因素
除了定義端點是否使用 REST 模式之外,在開始建立端點之前還有很多事情需要考慮。您將來是否有可能想要更新您的端點?您的輸出是否應該向使用者提供有用的提示? REST 是否適合您的情況使用?讓我們回答其中一些問題。
對您的端點進行版本控制
從一開始就開始考慮 API 的版本控制可能是個好主意,以便將來更容易進行更改。有幾種不同的方法可以確定使用者選擇使用的 API 版本:
- URI 版本控制
- 版本號碼被合併到 URL 路徑中,通常位於底部
- 範例:
- https://example.com/v1/users/1
- https://example.com/v2/users/1
- 查詢參數
- 版本號碼作為查詢參數附加在 API 端點
- 範例:
- https://example.com/users/1?apiVersion=1
- https://example.com/users/1?apiVersion=2
- 基於標題
- 版本號碼是一個特定且唯一的標頭欄位
- 範例(請求標頭):
- x-api-版本:1
- x-api-版本:2
- 內容協商
- 版本是根據表徵狀態或媒體類型決定的。
- 在下面的範例中,伺服器程式碼會知道firstName是第一個版本的名稱,並且在下一個版本中它被更改為givenName。
- 範例(請求正文):
- { 名字: '亨利' }
- {給定名稱:'亨利'}
模擬快速 REST API
有時,嘗試一下是了解它們如何運作的最佳工具。我最喜歡的演示 REST 的庫之一是 json-server。設定非常簡單 - 只需幾個步驟。
安裝 JSON 伺服器
npm install json-server
建立一個簡單的資料儲存
{ "users": [ { "id": "1", "username": "gorwell", "email": "gorwell@gmail.com" }, { "id": "2", "username": "cdickens", "email": "cdickens@gmail.com" }, { "id": "3", "username": "jausten", "email": "jausten@gmail.com" }, { "id": "4", "username": "vwoolf", "email": "vwoolf@gmail.com" }, { "id": "5", "username": "sking", "email": "sking@gmail.com" } ] }
啟動伺服器
npx json-server db.json
向本機伺服器發出 HTTP 請求
curl -X GET http://localhost:3000/users/1
簡單的 CRUD 資料網格
功能齊全的 REST 端點可以使用 ZingGrid 輕鬆連接到資料網格,只需將基本 REST URI 指向
<zing-grid src="http://localhost:3000/users" editor-controls></zing-grid>
最後的想法
REST API 在網路上有多種形狀和大小,每種都是為了滿足特定需求而客製化的。透過深思熟慮地建構 URI、選擇正確的操作並牢記版本控制,您可以創建一個簡單、靈活的 API,開發人員會樂於使用它。透過這些基本步驟,即使是快速原型也可以演變成健壯、可靠、經得起時間考驗的 API。
以上是了解 REST API - 不耐煩者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中