你当前正在访问 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
- 测试转换
先决条件
- 了解 Azure API 管理术语。
- 了解 Azure API 管理中策略的概念。
- 请完成以下快速入门:创建一个 Azure API 管理实例。 对于本教程,我们建议使用一个经典层或 v2 层,例如开发人员层或基本 v2 层。 消耗层不一定支持本教程中使用的所有策略。
- 此外,请完成以下教程:导入并发布第一个 API。
转到你的 API 管理实例
在 Azure 门户中,搜索并选择“API 管理服务”。
在“API 管理”服务页上,选择你的 API 管理实例。
测试原始响应
若要查看原始响应,请执行以下操作:
- 在 API 管理服务实例中,选择“API”。
- 从 API 列表中选择“Swagger Petstore”。
- 选择屏幕顶部的“测试”选项卡。
- 选择“GET Finds pets by status”操作,然后选择状态查询参数的不同值。 选择Send。
原始 API 响应应类似于以下响应:
转换 API 以添加自定义响应标头
API Management 包括多个转换策略,可用于修改请求或响应有效负载、标头或状态代码。 在此示例中,你在 API 响应中设置自定义响应标头。
设置转换策略
本部分介绍如何使用 set-header
策略来配置自定义响应标头。 在这里,你将使用基于表单的策略编辑器来简化策略配置。
依次选择“Swagger Petstore”>“设计”>“全部操作”。
在“出站处理”部分,选择“+ 添加策略”。
在“添加出站策略”窗口中,选择“设置标头”。
若要配置“设置标头”策略,请执行以下操作:
- 在“名称”下,输入“自定义”。
- 在“值”下,选择“+ 添加值”。 输入“我的自定义值”。
- 选择“保存”。
配置后,“出站处理”部分会显示两个 set-header 策略元素。
通过添加速率限制策略(限制)来保护 API
本部分介绍如何通过配置速率限制为后端 API 添加保护,使开发人员不会过度使用 API。 此示例演示如何使用代码编辑器来配置 rate-limit-by-key
策略。 在此示例中,限制设置为每 15 秒调用 3 次。 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 pets by status”操作,然后选择状态查询参数的不同值。 选择Send。
你可以看到,自定义响应标头已添加:
测试速率限制(限制)
依次选择“Swagger Petstore”>“测试”。
选择“GET Finds Pets by Status”操作。 在一行中多次选择“发送”。
在配置的时间段内发送过多请求后,会收到“429 请求过多”响应。
等待 15 秒或更长,然后再次选择“发送”。 此时应会收到“200 正常”响应。
总结
在本教程中,你了解了如何执行以下操作:
- 转换 API 以设置自定义响应标头
- 通过添加速率限制策略(限制)来保护 API
- 测试转换
后续步骤
转到下一教程: