網誌好讀版:http://hungys.logdown.com/posts/237260-azure-api-management-overview
API Management 是 Azure 上還滿新的一個服務,筆者一開始看到覺得還滿有趣的,但因為經驗還比較不足,所以花了一些時間才理解他所提供的服務內容以及想解決的問題。如果今天一家公司或一個 App 只有自己家 App 一項產品、API 只有自己會使用,那可能還沒辦法直接感受到 API Management 的方便,但如果今天提供的是一個服務,API 面向許多通路或是客戶,那麼 API Management 便會是一個很好的管理架構。
若要用最簡單的方式來介紹 API Management,基本上他就是一個 API Proxy,每一個 API Management 服務都提供了一個「https://*.portal.azure-api.net/」端點讓您呼叫自己的 API,主要的應用情境筆者理解如下:
此外,API Management 當然也提供了豐富的遙測功能,可以透過 Dashboard 來監控 API 的使用量,關於其他更多功能可以參考官方網站的說明:http://azure.microsoft.com/zh-tw/services/api-management/。
若要申請一個 API Management 服務,同樣是透過 Management Portal 來建立。首先點選**「New」並選取「App Service」>「API Management」>「Create」**。
接著自己取一個網域名稱並選擇要部署的地區,並點選下一步輸入管理者資料即可完成建立,建立 API Management 到真正啟用需要一點時間,請耐心等候。
建立完成後便可以從 Management Portal 開啓,以筆者註冊的服務為例,API 的端點為「https://cpbl.azure-api.net」,而管理者界面的位置是「https://cpbl.portal.azure-api.net」,您也可以透過下方的「Manage」按鈕進入管理界面。
進到 Dashboard 後便可以開始管理您的服務,首頁上也會有 API 使用的記錄。
進到管理後台後,後台的功能主要可以分成以下幾個項目:
在**「APIs」**分頁底下,您可以將您的 Web Service 加入,以透過 Azure 的 endpoint 來提供服務,而 API 的所有 endpoint 以及 operation 都可以在裡面做管理。
2. 產品管理 (Products)
在**「Products」**分頁中所謂產品的定義,以一家提供單一 API 服務的公司為例,便可以在裡面新增免費試用的產品「Free Trial」、低價位的「Starter」以及高價位的「Premium」三種產品,除了可以賦予三種產品不同的 API 權限,也可以針對它們的用量限制做管理。
3. 原則管理 (Polocies)
接續產品管理,在**「Policies」**中的原則便是對應到剛剛提到的「用量限制」,除了可以對產品賦予 usage quota 之外,甚至可以設定相關功能的權限,例如跨網域呼叫、JSON 轉換、是否可以設定 header 或 query string 等等,假如沒有 API Management,要達到這些需求勢必得花上好一番功夫,但在 Azure 中已經為您寫好了絕大部分會使用到的原則管理。
4. 使用者管理 (Users/Groups)
在**「Users」、「Groups」**分頁中主要是用來管理 API 的訂閱用戶,也就是您所提供服務的對象,此外也可以使用群組來做管理。除了透過 Administrator 的界面來管理用戶,您也可以自己建立網站並使用 REST API 來串接 API Management 的後台。
5. 數據分析 (Analytics)
在**「Analytics」**分頁中主要可以觀察各個用戶、API 的使用情形以及健康狀態,也可以用來監測訂閱者是否有異常的 API 呼叫行為。
除此之外,後台其他還有包括安全性、OAuth 等等的設定,就留給讀者自行去挖掘了。接下來我們將透過簡單示範來帶領讀者瞭解 API Management 的操作設定以及所能提供的服務內容。
首先切換到 APIs 分頁,點選**「Add API」**,輸入您的 Web Service 相關資訊便可以將 API 加入 Azure 做管理,假設您的 Web Service 端點是「https://myapi.cloudapp.net」,希望在「https://cpbl.azure-api.net/cpbl」來提供服務,則需要使用下列設定:
建立完成後便可以進到 API 的管理界面,此時可以點選**「Add Operation」**來新增一個 API 端點:
接下來我們可以開始輸入 API 的相關資訊,例如 HTTP 的方法以及呼叫的端點,同時也可以設定所需的參數以及其他快取設定,愈完整的內容將可以幫助您的 API 用戶更輕鬆地來上手:
接下來切換到 Products 分頁來管理產品,預設已經幫我們建立好「Starter」及「Unlimited」兩個產品,前者有每分鐘 5 次呼叫及每週最多 100 次呼叫的限制,為了節省時間我們直接使用預設建立好的產品。
此時我們分別點入兩個產品,分別按下**「Add API to Product」**將剛剛建立的 API 加入到兩個產品之中,這樣一來訂閱這兩個產品的用戶才能使用 Azure 端點呼叫您的服務:
我們在上面提到「Starter」產品有呼叫次數及頻率的限制,這些原則可以在 Policies 分頁中來達成。預設的範例已經幫我們設定好這項產品之下的所有 API,都有以下的限制:
若您要增加原則,也可以透過右方的快速鍵來做進一步設定。
剛剛我們所在的位置是在「Administrator Poral」,也就是最高管理者的界面。接下來我們要進入**「Developer Portal」**,也就是您的客戶的開發者所會使用到的界面。您可以從 Dashboard 的右上角點選連結進入。
如上圖,因為我們已經登入了 Administrator 帳號,預設已經含有這兩個產品的訂閱,所以我們可以直接在 APIs 分頁中來測試這些 API。
在 API 頁面中,還很貼心的提供了包括 C#、PHP、Python、Ruby... 等許多語言的範例程式,讓您可以很快速的來從 Client 端呼叫這些 API。
接下來,我們點選**「Open Console」**開始測試 API 的使用。在畫面上,我們可以選擇使用特定的產品訂閱來呼叫該 API,以管理者帳戶為例,因為分別訂閱了「Starter」以及「Unlimited」兩個產品,所以可以使用選單來切換使用不同的 Subscription Key。在 API Management 服務中,這個 Key 是以名為 subscription-key 的 Query String 來傳送的,它用來代表一個訂閱。
點選**「HTTP GET」**後,Console 便幫我們送出了請求並將 response 轉成結構化的資料呈現在頁面上,不需任何工具就可以測試 API 的使用。
如果我們持續使用「Starter」的 Key 來發送 request 的話,還記得先前提過有每分鐘 5 次呼叫的頻率限制,可以發現很快的已經達到了呼叫上限,所以回傳了**「429 Too Many Requests」**。我們完全沒有對我們的 API 做任何修改,單純地透過 API Management 的 Dashboard 就完成了這個功能,實在是相當方便!
API Management 是一個功能相當完整的服務,若您有將 API expose 給其他客戶的需求,透過這個平台可以很輕鬆地達成許多複雜的管理及原則控制。本文只是很粗略的帶領讀者體驗 Azure 提供的便捷服務,其實在 Dashboard 中還可以看到許多功能,例如可以客製化 Developer Portal,甚至使用 REST API 來建立自己的後台。這項 Azure 的新服務筆者相當推薦大家可以嘗試玩玩看。
關於其他更細節的使用說明,歡迎前往官方網站查閱:http://azure.microsoft.com/en-us/documentation/services/api-management/