掌握 API 設計:開發高效能 API 的基本策略

Indonesia Data Forum Pioneering and Big Data Growth
Post Reply
urrifat77
Posts: 34
Joined: Tue Dec 03, 2024 6:47 am

掌握 API 設計:開發高效能 API 的基本策略

Post by urrifat77 »

本文是我們社群的寶貴貢獻,並已由 DataCamp 進行編輯以確保清晰和準確。

有興趣分享自己的專業知識嗎?我們很樂意聽取您的意見!請隨時透過我們的社群貢獻表提交您的文章或想法。

您在叫車和送貨應用程式中看到的地圖是由 Google Maps API 提供的,開發人員使用該 API 來啟用該功能。 Google Maps API 是網站和應用程式用來顯示即時地圖的預設 API。如果您想知道確切的數字,那麼目前有5,567,291 個活躍網站正在使用該 API。

那麼,為什麼 Google Maps API 如此成功呢?是的,部分原因是它來自 Google 本身,而且還因為 API 設計允許開發人員輕鬆地將其整合到他們的產品中。

Google Maps API 只是一個例子;市場上有無數的API,例如PayPal、Stripe等,非常受歡迎。事實上,這些公司的成功部分歸功於他們的 API。

現在,任何網站或應用程式都可以透過 API 存取其核心功能。然而,歸根結底,API 的採用取決於它的設計有多好。在本部落格中,我們將探討 API 設計的基礎知識以及您需要遵循的最佳實踐,以確保開發人員喜歡您的 API。

什麼是API設計?
API 設計是定義應用程式可用於請求和交換資訊的方法和資料格式的過程。它涉及指定開發人員可以使用的端點或 URL、他們應發送和接收的資料格式以及 API 的預期行為。

雖然這些是 API 的技術面,但 API 設計是由 API 的用途決定的;背後的原因。了解 API 的用途可以消除開發過程中的難題,因為它可以深入了解預期行為、限制和潛在的未來發展。 API 設計現已納入更廣泛的API 管理範圍,以確保計畫設計與實施的 API 之間的一致性。

如果您熱衷於發展 API 整合和管理方面的技能,請查看 DataCamp 的使用 OpenAI API課程,這將幫助您開發人工智慧驅動的應用程式。

如何設計 API
每個 API 都因其用途和所實現的功能而有所不同。然而,每個開發人員都應該遵循某些通用指導原則來建立強大且對開發人員友善的 API。以下是您可以採取的方法:

第 1 步:了解 API 的用途
在概述 API 藍圖之前,請確保所有利害關係人清 捷克共和國電話號碼列表 楚該 API 的用途。與企業領導者密切合作,明確整體目標和目標。了解 API 如何適應更大的情況。如果可能,請直接與將與 API 互動的最終使用者或開發人員進行溝通。收集有關他們的需求、痛點和期望的回饋,以深入了解 API 的實際用例。

API 的用途將決定其功能、特性、如何記錄、需要哪些安全實作以及您將選擇什麼 API 規格。

選擇正確的 API 規範
API 規格有多種,每種規格都適合特定的用例。以下是一些最受歡迎的:

OpenAPI(招搖)
OpenAPI 是一種廣泛採用的描述 RESTful API 的標準。它以其簡單性而聞名,因為它可以輕鬆生成文檔,並為開發人員提供了一種標準化的方式來理解 API 並與之互動。 OpenAPI 使用 JSON 或 YAML 格式來指定 API 的端點、請求和回應格式以及驗證方法。它適用於透過 HTTP 進行無狀態通信,對於面向廣大受眾的 API 來說是一個不錯的選擇。

GraphQL 架構
GraphQL 是 RESTful API 的替代方案,其規格通常使用模式語言定義。 GraphQL 架構概述了可以查詢的特定資料的類型以及這些查詢的結構。適用於客戶端需要精確控制要檢索的資料的場景。

擴展您使用 Flask 將機器學習模型建置為 API 的知識。探索 DataCamp 關於Python 機器學習模型 API的綜合教學。

RAML(RESTful API 建模語言)
RAML 是一種基於 YAML 的語言,用於描述 RESTful API。它提供了一種人類可讀的方式來定義 API 的結構、端點和資料類型。當您優先考慮可讀性和簡單性時,請使用它。

SOAP(簡單物件存取協定)
OAP 是一種用於在 Web 服務中交換結構化資訊的協定。它通常用於需要標準化通訊的企業級應用程式。當您處理遺留環境時,它是最佳選擇。

WSDL(Web 服務描述語言)
WSDL 通常用於描述 SOAP(簡單物件存取協定)Web 服務。它定義了 Web 服務的操作、訊息和資料類型,允許不同系統之間的標準化通訊。它最適合需要嚴格合約和標準化通訊的企業級應用程式。

非同步API
它類似於 OpenAPI,但專為非同步 API 設計,AsyncAPI 專注於訊息驅動架構,並描述如何在不同元件之間交換訊息。當不需要 API 的即時回應時使用它。

Image

透過 DataCamp 的FastAP I 簡介教學深入了解 API 開發。

第 2 步:定義端點和資源
下一步是定義端點和資源。端點定義開發人員可用於與 API 互動的特定 URL(統一資源定位符)或 URI(統一資源識別碼)。每個端點通常對應於特定的操作或動作。 GET、POST、PUT 和 DELETE 等常見 HTTP 方法用於在這些端點上執行操作。這是一個例子:

GET /users:檢索使用者清單。
GET /users/{id}:使用使用者 ID 檢索特定使用者的詳細資訊。
POST /users:建立一個新使用者。
PUT /users/{id}:更新特定使用者的詳細資訊。
DELETE /users/{id}:刪除特定使用者。
資源代表您的 API 管理的實體或物件。這些可以是從使用者和產品到評論或系統中任何其他相關實體的任何內容。每個資源通常具有唯一識別碼並與一個或多個端點相關聯。例如:

資源:用戶

屬性:ID、使用者名稱、電子郵件等。

端點:

/users(GET - 列出所有用戶,POST - 建立新用戶),

/users/{id} (GET - 檢索用戶詳細信息,PUT - 更新用戶詳細信息,DELETE - 刪除用戶)

資源:產品

屬性:ID、名稱、描述、價格等。

端點:

/products(GET - 列出所有產品,POST - 創建新產品),

/products/{id} (GET - 檢索產品詳細信息,PUT - 更新產品詳細信息,DELETE - 刪除產品)

第 3 步:決定命名約定
如果您希望開發人員喜歡您的 API,請確保使用清晰且一致的命名約定。在為端點、資源和參數選擇名稱時不要有創意,優先考慮清晰度和簡單性。以下是一些可以幫助您的指南:

使用名詞表示資源:
為您的資源選擇清晰且具描述性的名詞。例如,/使用者、/產品、/訂單。
避免模​​稜兩可或通用的術語。具體傳達資源的用途。
使用動詞表示動作:
使用 HTTP 方法(GET、POST、PUT、DELETE)表示對資源的操作。
保持端點之間的動詞一致。例如,使用 GET 檢索使用者並使用 POST 建立新使用者。
與複數保持一致:
決定您的資源名稱應該是單數還是複數,並在整個 API 中保持一致。例如,堅持使用 /user 或 /users。
第 3 步:優化請求和回應負載
設計 API 合約的另一個重要方面是指定請求和回應有效負載,它指的是請求中發送的資料和回應中預期的資料。您需要做的第一件事是為您的 API 選擇標準資料格式,例如 JSON 或 XML。最好選擇 JSON,因為它因其簡單性和可讀性而被廣泛使用。您可以在 DataCamp 的Streamlined Data Ingestion with pandas課程中學習如何使用 JSON 。

請記住保持負載輕量,因為它們直接影響 API 的效率。您可以執行以下操作:

1. 嘗試實現有效負載壓縮(例如gzip)以減少傳輸過程中請求的大小。

2. 如果適用,支援批次請求,其中多個操作可以分組為單一請求。

3. 使用查詢或標頭參數將 API 端點設計為僅傳回客戶端所需的資料。

第4步:實施身份驗證和授權
確保在 API 設計中考慮安全性。有兩種方法可以實現:身份驗證和授權。

就身份驗證而言,您可以實作 OAuth 和 API 金鑰。 API key 是一種簡單且常用的方法,其中唯一的金鑰包含在請求標頭中。然而,這種身份驗證類型不夠安全。

另一方面,OAuth是一個更健壯和靈活的框架,適合第三方應用程式需要存取的場景。至於授權,明確定義使用者或應用程式可以擁有的存取等級和範圍。

第 5 步:使用 API 版本控制
使用者需求和技術經常會隨著時間的推移而變化,因此 API 必須不斷發展。 API 版本控制可讓您在不破壞現有系統的情況下對 API 進行變更。您可以實作多種類型的 API 版本控制,例如 URL 版本控制、查詢參數版本控制、標頭版本控制等。

例如,


第 6 步:定義適當的錯誤訊息
在 API 的使用期間必然會發生錯誤。然而,重要的是如何處理這些錯誤。在回應正文中包含清晰簡潔的錯誤訊息,以幫助開發人員了解出了什麼問題。

包括錯誤代碼、描述和解決建議等資訊。使用標準 HTTP 狀態碼來指示請求的成功或失敗(例如,200 OK 表示成功,404 Not Found 表示找不到資源,500 Internal Server Error 表示伺服器問題)。

第 7 步:考慮意外行為
Post Reply