你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:转换和保护 API

适用于:所有 API 管理层级

本教程介绍如何配置常用策略来保护或转换 API。 策略是针对 API 请求或响应按顺序运行的一系列语句,它会修改 API 的行为。

例如,你可能希望设置自定义响应标头。 或者,你还可能希望通过配置速率限制策略,为后端 API 添加保护,使开发人员不会过度使用 API。 这些示例是 API 管理策略的简单简介。 有关更多策略选项,请参阅 API 管理策略

注意

API 管理默认配置全局 forward-request 策略。 网关需有 forward-request 策略才能完成对后端服务发出的请求。

本教程介绍如何执行下列操作:

  • 转换 API 以设置自定义响应标头
  • 通过添加速率限制策略(限制)来保护 API
  • 测试转换

门户中 API 管理策略的屏幕截图。

先决条件

转到你的 API 管理实例

  1. 在 Azure 门户中,搜索并选择“API 管理服务”。

    选择“API 管理服务”

  2. 在“API 管理”服务页上,选择你的 API 管理实例。

    选择你的 API 管理实例

测试原始响应

若要查看原始响应,请执行以下操作:

  1. 在 API 管理服务实例中,选择“API”。
  2. 从 API 列表中选择“Swagger Petstore”
  3. 选择屏幕顶部的“测试”选项卡。
  4. 选择“GET Finds pets by status”操作,然后选择状态查询参数的不同值。 选择Send

原始 API 响应应类似于以下响应:

门户中原始 API 响应的屏幕截图。

转换 API 以添加自定义响应标头

API Management 包括多个转换策略,可用于修改请求或响应有效负载、标头或状态代码。 在此示例中,你在 API 响应中设置自定义响应标头。

设置转换策略

本部分介绍如何使用 set-header 策略来配置自定义响应标头。 在这里,你将使用基于表单的策略编辑器来简化策略配置。

  1. 依次选择“Swagger Petstore”>“设计”>“全部操作”

  2. 在“出站处理”部分,选择“+ 添加策略”。

    在门户中导航到出站策略的屏幕截图。

  3. 在“添加出站策略”窗口中,选择“设置标头”。

    在门户中配置“设置标头”策略的屏幕截图。

  4. 若要配置“设置标头”策略,请执行以下操作:

    1. 在“名称”下,输入“自定义”。
    2. 在“值”下,选择“+ 添加值”。 输入“我的自定义值”。
    3. 选择“保存”。
  5. 配置后,“出站处理”部分会显示两个 set-header 策略元素。

    门户中“设置标头出站策略”的屏幕截图。

通过添加速率限制策略(限制)来保护 API

本部分介绍如何通过配置速率限制为后端 API 添加保护,使开发人员不会过度使用 API。 此示例演示如何使用代码编辑器来配置 rate-limit-by-key 策略。 在此示例中,限制设置为每 15 秒调用 3 次。 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 pets by status”操作,然后选择状态查询参数的不同值。 选择Send

    你可以看到,自定义响应标头已添加:

    显示门户中的自定义响应标头的屏幕截图。

测试速率限制(限制)

  1. 依次选择“Swagger Petstore”>“测试”。

  2. 选择“GET Finds Pets by Status”操作。 在一行中多次选择“发送”。

    在配置的时间段内发送过多请求后,会收到“429 请求过多”响应。

    显示门户中响应中“请求过多”的屏幕截图。

  3. 等待 15 秒或更长,然后再次选择“发送”。 此时应会收到“200 正常”响应。

总结

在本教程中,你了解了如何执行以下操作:

  • 转换 API 以设置自定义响应标头
  • 通过添加速率限制策略(限制)来保护 API
  • 测试转换

后续步骤

转到下一教程: