Compartilhar via

教程:转换和保护 API

适用于:API 管理的所有层级

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

例如,你可能希望设置自定义响应标头。 或者,配置速率限制策略来保护后端 API,因此开发人员不会过度使用 API。 这些示例简单介绍了API Management策略。 有关更多策略选项,请参阅 API Management 策略

注意事项

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

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

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

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

先决条件

转到 API 管理实例

  1. 在 Azure portal 中,搜索并选择 API Management 服务

    截图,显示搜索结果中的API Management服务。

  2. API Management服务页上,选择API Management实例:

    显示 API 管理服务页上的 API 管理实例的截屏

测试原始响应

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

  1. 在API Management服务实例中,选择 APIs>APIs
  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
  • 测试转换

后续步骤

转到下一教程: