重写 URL
适用于:所有 API 管理层级
rewrite-uri
策略将请求 URL 从其公用格式转换为 Web 服务所需的格式,如以下示例所示。
公共 URL -
http://api.example.com/storenumber/ordernumber
请求 URL -
http://api.example.com/v2/US/hardware/storenumber&ordernumber?City&State
如果要将用户和/或浏览器友好的 URL 转换成 Web 服务所需的 URL 格式,则可使用此策略。 应用此策略的前提是公开备用的 URL 格式,例如简洁 URL、RESTful URL、用户友好的 URL 或 SEO 友好的 URL。这些 URL 是纯结构化 URL,不包含查询字符串,只包含资源的路径(在方案和颁发机构的后面)。 通常会出于美观、可用性或搜索引擎优化 (SEO) 目的使用这种 URL。
注意
按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略。
策略语句
<rewrite-uri template="uri template" copy-unmatched-params="true | false" />
属性
客户 | 说明 | 需要 | 默认 |
---|---|---|---|
template | 包含任何查询字符串参数的实际 Web 服务 URL。 允许使用策略表达式。 使用表达式时,整个值必须是一个表达式。 | 是 | 空值 |
copy-unmatched-params | 指定是否将原始 URL 模板中不存在的传入请求中的查询参数添加到重新编写模板定义的 URL。 允许使用策略表达式。 | 否 | true |
使用情况
使用注意事项
只能使用此策略添加查询字符串参数。 不能在重写 URL 中添加额外的模板路径参数。
示例
<policies>
<inbound>
<base />
<rewrite-uri template="/v2/US/hardware/{storenumber}&{ordernumber}?City=city&State=state" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
<inbound>
<base />
<rewrite-uri template="/put" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
<!-- Resulting URL will be /put?c=d -->
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
<inbound>
<base />
<rewrite-uri template="/put" copy-unmatched-params="false" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
<!-- Resulting URL will be /put -->
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例