共用方式為


教學課程:轉換及保護 API

適用於:所有 APIM 層

在本教學課程中,您將瞭解如何設定 原則 以保護或轉換 API。 原則是語句的集合,這些語句會依序在修改 API 行為之 API 的要求或回應上執行。

例如,您可能想要設定自定義響應標頭。 或者,藉由設定速率限制原則來保護後端 API,讓開發人員不會過度使用 API。 這些範例是 API 管理 原則的簡單簡介。 如需更多原則選項,請參閱 API 管理原則

注意

根據預設,API 管理會設定全域 forward-request 原則。 閘道需要 forward-request 原則,才能完成後端服務的要求。

在本教學課程中,您會了解如何:

  • 轉換 API 以設定自訂響應標頭
  • 新增速率限制原則 (節流) 來保護 API
  • 測試轉換

入口網站中 APIM 原則的螢幕擷取畫面。

必要條件

移至您的 API 管理執行個體

  1. 在 Azure 入口網站中,搜尋並選取 [API 管理服務]

    選取 [API 管理服務]

  2. 在 [API 管理服務] 頁面中,選取您的 API 管理執行個體。

    選取您的 API 管理執行個體

測試原始回應

查看原始回應:

  1. 在您的 API 管理服務執行個體中,選取 [API]
  2. 從您的 API 清單中選取 [Swagger Petstore ]。
  3. 選取畫面頂端的 [測試] 索引標籤。
  4. 依狀態作業選取 GET Finds 寵物,並選擇性地選取狀態查詢參數的不同值 請選取傳送

原始 API 回應看起來應如下列回應所示:

入口網站中原始 API 回應的螢幕擷取畫面。

轉換 API 以新增自訂響應標頭

API 管理 包含數個轉換原則,可用來修改要求或響應承載、標頭或狀態代碼。 在此範例中,您會在 API 回應中設定自訂回應標頭。

設定轉換原則

本節說明如何使用原則來設定自定義響應標頭 set-header 。 在這裡,您會使用可簡化原則設定的窗體式原則編輯器。

  1. 選取 [Swagger Petstore>設計>所有作業]。

  2. 在 [輸出處理] 區段中,選取 [+ 新增原則]

    在入口網站中瀏覽至輸出原則的螢幕擷取畫面。

  3. 在 [新增輸出原則] 視窗中,選取 [設定標頭]。

    在入口網站中設定設定標頭原則的螢幕擷取畫面。

  4. 若要進行標頭原則設定,請執行下列動作:

    1. 在 [名稱] 底下,輸入 [自定義]。
    2. 在 [值] 底下,選取 [+ 新增值]。 輸入 「我的自定義值」
    3. 選取儲存
  5. 設定之後, set-header 原則專案會出現在 [輸出處理 ] 區段中。

    在入口網站中設定標頭輸出原則的螢幕擷取畫面。

新增速率限制原則 (節流) 來保護 API

本節示範如何設定速率限制,並新增後端 API 的保護,讓開發人員不過度使用 API。 此範例示範如何使用程式代碼編輯器設定 rate-limit-by-key 原則。 在此範例中,限制會設定為每15秒三個呼叫。 15 秒之後,開發人員可以重試呼叫 API。

注意

取用層不支持此原則。

  1. 選取 [Swagger Petstore>設計>所有作業]。

  2. [輸入處理] 區段中,選取程式碼編輯器 (</>) 圖示。

    在入口網站中瀏覽至輸入原則程式碼編輯器的螢幕擷取畫面。

  3. 將游標移至空白行上的 <inbound> 元素內。 接著,選取畫面右上角的 [顯示程式碼片段]。

    在入口網站中選取 [在輸入原則編輯器中顯示指令碼片段] 的螢幕擷取畫面。

  4. 在右側視窗的 [存取限制原則] 下方,選取 [+ 限制每個金鑰的呼叫速率]

    在資料指標新增 <rate-limit-by-key /> 元素。

    在入口網站中插入每個金鑰原則限制呼叫率的螢幕擷取畫面。

  5. <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>

本節的其餘部分將測試您在此文章中設定的原則轉換。

測試自定義回應標頭

  1. 選取 [Swagger Petstore>測試]。

  2. 依狀態作業選取 GET Finds 寵物,並選擇性地選取狀態查詢參數的不同值 請選取傳送

    如您所見,已新增自定義回應標頭:

    顯示入口網站中自定義回應標頭的螢幕快照。

測試速率限制 (節流)

  1. 選取 [Swagger Petstore>測試]。

  2. 選取 [依狀態尋找寵物] 作業。 選取資料 列中的 [傳送 數次]。

    在設定的期間傳送太多要求之後,您會收到 429 個太多要求 回應。

    螢幕擷取畫面顯示在入口網站的回應中有太多要求。

  3. 至少等候 15 秒,接著再次選取 [傳送]。 此時,您應該得到 200 確定的回應。

摘要

在本教學課程中,您已了解如何:

  • 轉換 API 以設定自訂響應標頭
  • 新增速率限制原則 (節流) 來保護 API
  • 測試轉換

下一步

前進到下一個教學課程: