什麼是 API?
API 是使用一組定義和協定讓兩個軟體元件彼此通訊的機制。舉例來說,氣象局的軟體系統包含有每日的天氣資料。您手機中的天氣應用程式會透過 API 與此系統「交談」並且在您的手機顯示每日天氣的最新消息。
API 代表什麼意思?
API 代表應用程式開發介面。在 API 的內容中,應用程式一詞指的是具有不同功能的任何軟體。可以將介面看作是兩個應用程式之間的服務合約。這份合約定義了兩者如何使用要求與回應彼此進行通訊。它們的 API 文件包含有關開發人員如何構建這些要求與回應的資訊。
API 如何運作?
API 架構通常會藉由用戶端和伺服器來說明。傳送要求的應用程式稱為用戶端,傳送回應的應用程式則稱為伺服器。因此在天氣的例子當中,氣象局的天氣資料庫是伺服器,行動應用程式是用戶端。
API 有四種不同方式可以運作,具體取決於它們建立的時機以及原因為何。
SOAP API
這些 API 使用簡單物件存取協定 (Simple Object Access Protocol)。用戶端和伺服器使用 XML 交換訊息。這是過去較為常用,但是較不具有彈性的 API。
RPC API
這些 API 稱為遠端程序呼叫 (Remote Procedure Call)。用戶端在伺服器上完成功能 (或程序),伺服器則將輸出傳回用戶端。
WebSocket API
WebSocket API 是使用 JSON 物件傳遞資料的另一個現代 Web API 開發。WebSocket API 可支援用戶端應用程式以及伺服器之間的雙向通訊。伺服器可將回呼訊息傳送至連接的用戶端,使得它與 REST API 更有效率。
REST API
這是現今在 Web 上可以找到最常用以及最彈性的 API。用戶端傳送要求至伺服器作為資料。伺服器使用此用戶端輸入來啟動內部功能,並且將輸出資料傳回用戶端。讓我們在下面更詳細地看看 REST API。
什麼是 REST API?
REST 代表表現層狀態轉換 (Representational State Transfer)。REST 定義了例如 GET、PUT、DELETE 的一組功能,用戶端可以利用它們來存取伺服器資料。用戶端和伺服器使用 HTTP 交換資料。
REST API 的主要功能為無狀態。無狀態的意思是伺服器在要求之間並不會儲存用戶端資料。用戶端對於伺服器的要求類似於您在瀏覽器中輸入以造訪網站的 URL。來自伺服器的回應為普通資料,沒有典型的 Web 圖形呈現。
什麼是 Web API?
Web API 或 Web Service API 是網頁伺服器與網頁瀏覽器之間的應用程式處理介面。所有 Web 服務皆為 API,但是並非所有 API 都是 Web 服務。REST API 是一種 Web API 的特殊類型,會使用上述的標準結構樣式。
存在有關於 API 的不同術語 (例如 Java API 或服務 API) 的原因是,就歷史而言,API 的建立時間要在全球資訊網 (world wide web) 之前。現代的 Web API 是 REST API,而這個術語可以交互使用。
什麼是 API 整合?
API 整合是會自動更新用戶端與伺服器之間資料的軟體元件。API 整合的一些例子是當自動資料從手機的圖片庫同步至雲端,或是當您前往其他時區時,時間與日期自動地在您的筆記型電腦上同步。企業可以使用它們有效地自動化許多系統功能。
REST API 有哪些優點?
REST API 提供四個主要優點:
1.整合
API 是用於將新的應用程式與現有軟體系統加以整合。如此會增加開發速度,因為您不需要從頭開始編寫每個功能。您可以使用 API 以便利用現有程式碼。
2.創新
整個產業可能會隨著新應用程式的推出而發生改變。企業需要做出快速回應並且支持創新服務的快速部署。他們只需在 API 層級做出變更,無需重新編寫整個程式碼。
3.擴展
API 為企業提供獨有機會,能夠跨不同平台符合其用戶端需要。舉例來說,對應 API 將可允許透過網站、Android、iOS 等方式對應資訊整合。任何企業只要使用免費或是付費 API,即可提供類似存取其內部資料庫的權限。
4.易於維護
API 的作用是為兩個系統之間提供閘道。每個系統都有義務進行內部變更,如此 API 才不會受到影響。透過這種方式,某方未來對於任何程式碼所進行的變更對於另一方都不會造成影響。
API 有哪些不同類型?
API 會根據其架構以及使用範圍加以分類。我們已經探究過 API 架構的主要類型,那麼現在讓我們來看看使用範圍。
私有 API
這些 API 是供企業內部使用,同時僅會用於連接企業內部的系統和資料。
公有 API
這些 API 是開放給大眾,任何人都可以使用。不一定會有與這些類型的 API 有關的部分授權與費用。
合作夥伴 API
這些 API 僅可由授權的內部開發人員存取,以協助企業對企業的合作關係。
複合 API
這些 API 結合了兩個或是更多不同的 API 以滿足複雜的系統需求或行為。
API 端點是什麼,以及它為什麼很重要?
API 端點是 API 通訊系統中最終的接觸點。這些包括伺服器 URL、服務以及其他特定數位地點,相關資訊則是透過此處在系統間傳送與接收。API 端點對於企業而言至關重要,主要原因有兩個:
1.安全
API 端點會使得系統容易遭受攻擊。API 監控對於防止誤用至為重要。
2.效能
API 端點 (尤其是高流量的 API 端點) 可能會造成瓶頸並且影響系統效能。
如何確保 REST API 安全?
必須透過適當身分驗證與監控確保所有 API 的安全。保護 REST API 的兩個主要方法包括:
1.身分驗證字符
這些字符是用於授權使用者進行 API 呼叫。身分驗證字符會檢查使用者是否為他們所自稱的使用者,以及他們對於該特殊 API 呼叫是否擁有存取權限。舉例來說,當您登入電子郵件伺服器,您的電子郵件用戶端會使用身分驗證字符進行安全存取。
2.API 金鑰
API 金鑰可驗證進行 API 呼叫的程式或應用程式。它們可識別應用程式,並且確保其擁有進行特殊 API 呼叫所需的存取權限。API 金鑰並不如字符安全,但是它們可允許 API 監控以便根據用法收集資料。當您造訪不同網站時,您可能會注意到瀏覽器 URL 中存在有長字元與數字字串。此字串是網站用來進行內部 API 呼叫的 API 金鑰。
如何建立 API?
需要進行盡職調查和相關努力以建置其他開發人員會想要使用並且信賴的 API。以下是高品質 API 設計所需的五個步驟:
1.規劃 API
API 規格 (例如 OpenAPI) 可為您的 API 設計提供藍圖。最好能夠提前考慮不同的使用案例,並且確保 API 遵守目前的 API 開發標準。
2.建置 API
API 設計者使用未定案程式碼設計 API 原型。一旦原型完成測試,開發人員可以將其自訂為內容規格。
3.測試 API
API 測試與軟體測試相同,必須完成測試以避免錯誤與瑕疵。API 測試工具可用於加強 API 測試以防範網路攻擊。
4.記錄 API
儘管 API 能夠一目了然,但是 API 文件可用作改善可用性的指南。提供眾多功能以及使用案例,而且記錄完備的 API 在以服務導向的架構中往往更受歡迎。
5.販售 API
如同 Amazon 是零售的線上市集一樣,API Marketplace 可供開發人員購買以及販售其他 API。列出您的 API 可讓您透過其獲利。
什麼是 API 測試?
API 測試策略類似於其他軟體測試方法。主要焦點在於驗證伺服器回應。API 測試包括:
- 向 API 端點提出多項要求以進行效能測試。
- 編輯單元測試以檢查商務邏輯以及功能正確性。
- 透過模擬系統攻擊進行安全測試。
如何編寫 API 文件?
編寫全方位的完整 API 文件是 API 管理流程的一部分。API 文件可以使用工具自動產生或是手動編寫。部分最佳實務包括:
- 以簡單、易讀的英文編寫說明。使用工具產生的文件可能會變得冗長並且需要編輯。
- 使用程式碼範例以說明功能。
- 維護文件,使其具有準確性和最新狀態。
- 針對初學者的編寫風格
- 涵蓋 API 可以為使用者解決的所有問題。
如何使用 API?
實施新的 API 的步驟包括:
- 獲得 API 金鑰。透過 API 提供者建立驗證帳戶即可完成上述動作。
- 設定 HTTP API 用戶端。此工具可允許您使用收到的 API 金鑰輕鬆地建構 API 要求。
- 如果您還沒有 API 用戶端,可以參考 API 文件,嘗試在瀏覽器中自行構建要求。
- 一旦您熟悉新的 API 語法之後,即可開始在您的程式碼中使用。
哪裡可以找到新的 API?
可以在 API Marketplace 以及 API 目錄中找到新的 Web API。API Marketplace 是開放式平台,任何人都可以將 API 列出進行販售。API 目錄是由目錄擁有者所管理的控管儲存庫。Expert API 設計者可以先將新的 API 進行評估與測試,然後再將它加入自己的目錄中。
部分熱門的 API 網站包括:
- Rapid API – 全球最大的 API 市集,擁有超過 10,000 個公有 API 以及 1 百萬位活躍的開發人員。RapidAPI 能夠允許使用者在承諾購買之前直接在平台上測試 API。
- 公有 API – 該平台將遠端 API 分成 40 種合適類別,使其更方便瀏覽並且找到符合自己需要的適當 API。
- APIForThat 和 APIList – 這兩個網站都有一份超過 500 個 Web API 的清單,以及有關如何使用的深入介紹資訊。
什麼是 API Gateway?
API Gateway 是一種 API 管理工具,適用於使用廣泛後端服務的企業版用戶端。一般而言,API Gateway 是處理例如使用者身分驗證、統計數字以及費率管理等適用於所有 API 呼叫的一般工作。
Amazon API Gateway 是一種全受管服務,可讓開發人員輕鬆地建立、發佈、維護、監控和保護任何規模的 API。它負責處理有關接受和處理數千個並行 API 呼叫的所有工作,包括流量管理、CORS 支援、授權和存取控制、調節、監控和 API 版本管理。
什麼是 GraphQL?
GraphQL 是專門為 API 所開發的查詢語言。它優先為用戶端提供他們要求的資料,此外不會提供其他內容。它的設計旨在讓 API 具有快速、彈性與適合開發人員的特性。作為 REST 的替代,GraphQL 為前端開發人員提供使用單一 GraphQL 端點查詢多個資料庫、微型服務和 API 的能力。 組織選擇使用 GraphQL 建置 API 的原因在於它可協助組織更快速地開發應用程式。 在這裡閱讀更多有關 GraphQL 的資訊。
AWS AppSync 是一種全受管服務,透過處理安全連線至 AWS DynamoDB、AWS Lambda 等資料來源的繁重工作,來輕鬆開發 GraphQL API。AWS AppSync 可將 WebSocket 上的即時資料更新推送至數以百萬計的用戶端。對於行動和 Web 應用程式,AppSync 也可在裝置離線時提供本機資料存取。部署後,AWS AppSync 可自動擴展和縮減 GraphQL API 執行引擎,以滿足 API 請求量。
如何獲得 Amazon API 服務?
應用程式開發介面管理是現代軟體開發中極為重要的一部分。對於內部與外部使用者而言,API 基礎設施 (包括工具、閘道以及微服務架構) 是值得投資的。
Amazon API Gateway 附帶有完善功能,可同時而且有效地管理多個 API。在 AWS Portal 完成註冊即可免費進行最多一百萬次 API 呼叫。
AWS AppSync 透過內建高可用性無伺服器基礎設施提供全受管 GraphQL API 設定、管理及維護。您只需按實際使用量付費,沒有最低費用或限制服務用量。若要開始使用,請登入 AWS AppSync 主控台。