重写 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 -->

后续步骤

有关使用策略的详细信息,请参阅: