教學課程:轉換及保護 API
適用於:所有 APIM 層
在本教學課程中,您將瞭解如何設定 原則 以保護或轉換 API。 原則是語句的集合,這些語句會依序在修改 API 行為之 API 的要求或回應上執行。
例如,您可能想要設定自定義響應標頭。 或者,藉由設定速率限制原則來保護後端 API,讓開發人員不會過度使用 API。 這些範例是 API 管理 原則的簡單簡介。 如需更多原則選項,請參閱 API 管理原則。
注意
根據預設,API 管理會設定全域 forward-request
原則。 閘道需要 forward-request
原則,才能完成後端服務的要求。
在本教學課程中,您會了解如何:
- 轉換 API 以設定自訂響應標頭
- 新增速率限制原則 (節流) 來保護 API
- 測試轉換
必要條件
- 了解 Azure API 管理術語。
- 了解 Azure API 管理的原則概念。
- 完成下列快速入門:建立 Azure API 管理執行個體。 在本教學課程中,我們建議您使用其中一個傳統或 v2 層,例如開發人員層或基本 v2 層。 取用層不支援本教學課程中使用的所有原則。
- 同時也請完成下列教學課程:匯入和發佈您的第一個 API。
移至您的 API 管理執行個體
在 Azure 入口網站中,搜尋並選取 [API 管理服務]。
在 [API 管理服務] 頁面中,選取您的 API 管理執行個體。
測試原始回應
查看原始回應:
- 在您的 API 管理服務執行個體中,選取 [API]。
- 從您的 API 清單中選取 [Swagger Petstore ]。
- 選取畫面頂端的 [測試] 索引標籤。
- 依狀態作業選取 GET Finds 寵物,並選擇性地選取狀態查詢參數的不同值。 請選取傳送。
原始 API 回應看起來應如下列回應所示:
轉換 API 以新增自訂響應標頭
API 管理 包含數個轉換原則,可用來修改要求或響應承載、標頭或狀態代碼。 在此範例中,您會在 API 回應中設定自訂回應標頭。
設定轉換原則
本節說明如何使用原則來設定自定義響應標頭 set-header
。 在這裡,您會使用可簡化原則設定的窗體式原則編輯器。
選取 [Swagger Petstore>設計>所有作業]。
在 [輸出處理] 區段中,選取 [+ 新增原則]。
在 [新增輸出原則] 視窗中,選取 [設定標頭]。
若要進行標頭原則設定,請執行下列動作:
- 在 [名稱] 底下,輸入 [自定義]。
- 在 [值] 底下,選取 [+ 新增值]。 輸入 「我的自定義值」。
- 選取儲存。
設定之後, set-header 原則專案會出現在 [輸出處理 ] 區段中。
新增速率限制原則 (節流) 來保護 API
本節示範如何設定速率限制,並新增後端 API 的保護,讓開發人員不過度使用 API。 此範例示範如何使用程式代碼編輯器設定 rate-limit-by-key
原則。 在此範例中,限制會設定為每15秒三個呼叫。 15 秒之後,開發人員可以重試呼叫 API。
注意
取用層不支持此原則。
選取 [Swagger Petstore>設計>所有作業]。
在 [輸入處理] 區段中,選取程式碼編輯器 (</>) 圖示。
將游標移至空白行上的
<inbound>
元素內。 接著,選取畫面右上角的 [顯示程式碼片段]。在右側視窗的 [存取限制原則] 下方,選取 [+ 限制每個金鑰的呼叫速率]。
在資料指標新增
<rate-limit-by-key />
元素。將
<inbound>
元素中的<rate-limit-by-key />
程式碼修改為下列程式碼。 然後選取儲存。<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
測試轉換
此時若在程式碼編輯器中查看程式碼,您的原則將如下列程式碼所示:
<policies>
<inbound>
<rate-limit calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
<base />
</inbound>
<outbound>
<set-header name="Custom" exists-action="override">
<value>"My custom value"</value>
</set-header>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
本節的其餘部分將測試您在此文章中設定的原則轉換。
測試自定義回應標頭
選取 [Swagger Petstore>測試]。
依狀態作業選取 GET Finds 寵物,並選擇性地選取狀態查詢參數的不同值。 請選取傳送。
如您所見,已新增自定義回應標頭:
測試速率限制 (節流)
選取 [Swagger Petstore>測試]。
選取 [依狀態尋找寵物] 作業。 選取資料 列中的 [傳送 數次]。
在設定的期間傳送太多要求之後,您會收到 429 個太多要求 回應。
至少等候 15 秒,接著再次選取 [傳送]。 此時,您應該得到 200 確定的回應。
摘要
在本教學課程中,您已了解如何:
- 轉換 API 以設定自訂響應標頭
- 新增速率限制原則 (節流) 來保護 API
- 測試轉換
下一步
前進到下一個教學課程: