你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:转换和保护 API
适用于:所有 API 管理层级
本教程介绍如何配置常用策略来保护或转换 API。 策略是针对 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
- 测试转换
后续步骤
转到下一教程: