教程:转换和保护 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 管理服务页上的 API 管理实例的屏幕截图。

测试原始响应

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

  1. 在 API 管理服务实例中,选择 API>API
  2. 在 API 列表中,选择 Swagger Petstore
  3. 在屏幕顶部,选择“ 测试”。
  4. 选择操作 GET Finds Pets by status,并可选择状态查询参数的其他值。
  5. 选择发送

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

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

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

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

设置转换策略

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

  1. 选择Swagger Petstore>设计>全部操作

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

    在门户中访问出站策略的屏幕截图。

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

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

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

    1. 在“名称”一栏中,输入“自定义”。
    2. 在“值”下,选择“+ 添加值”。 输入 我的自定义值
    3. 选择“保存”。

    配置后,“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. <rate-limit-by-key /> 元素中的 <inbound> 代码修改为以下代码。 再选择“保存”。

    <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,并可选择状态查询参数的其他值。 选择发送

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

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

测试速率限制

  1. 依次选择Swagger Petstore>测试

  2. 选择GET 根据状态查找宠物操作。 在一行中多次选择“发送”。

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

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

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

总结

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

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

后续步骤

转到下一教程: