Compartir a través de


Reescribir dirección URL

SE APLICA A: todos los niveles de API Management

La rewrite-uri política convierte una URL de solicitud de su formulario público al formulario esperado por el servicio web.

Utiliza esta política cuando necesites transformar una URL amigable para humanos o para el navegador en el formato de URL que espera el servicio web. Aplica esta política solo al exponer un formato alternativo de URL, como URLs limpias, URLs RESTful, URLs fáciles de usar o URLs optimizadas para SEO que sean puramente estructurales y no contengan una cadena de consulta, sino que contengan solo la ruta del recurso (después del esquema y la autoridad). A menudo haces este cambio por motivos estéticos, de usabilidad o de optimización para motores de búsqueda (SEO).

Nota

Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.

Instrucción de la directiva

<rewrite-uri template="uri template" copy-unmatched-params="true | false" />

Atributos

Asignar nombre Descripción Necesario Valor predeterminado
plantilla La dirección URL del servicio web real con cualquier parámetro de cadena de consulta. Se permiten expresiones de directiva. Cuando se usan expresiones, todo el valor debe ser una expresión. N/D
copy-unmatched-params Especifica si los parámetros de consulta en la solicitud entrante que no están presentes en la plantilla original de URL se añaden a la URL definida por la plantilla de reescritura. Se permiten expresiones de directiva. No true

Uso

Notas de uso

Solo puedes añadir parámetros de cadena de consulta usando la política. No puedes añadir parámetros adicionales de ruta de plantilla en la URL reescrita.

Examples

Ejemplo 1: Reescritura básica de URL

En el siguiente ejemplo, la URL pública se reescribe para coincidir con el formato de la URL del servicio backend, y se incluyen parámetros de consulta basándose en otra lógica.

  • URL pública: http://api.example.com/storenumber/ordernumber

  • URL de solicitud: http://api.example.com/v2/US/hardware/storenumber/ordernumber?City&State

<policies>
    <inbound>
        <base />
        <rewrite-uri template="/v2/US/hardware/{storenumber}/{ordernumber}?City=city&State=state" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Ejemplo 2: Copiar parámetros no emparejados

En el siguiente ejemplo, la URL pública se reescribe para coincidir con el formato de URL del servicio de backend, y la política copia cualquier parámetro de consulta no coincidido a la nueva URL.

<!-- 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 -->

Ejemplo 3: No copies parámetros no emparejados

En el siguiente ejemplo, la URL pública se reescribe para coincidir con el formato de URL del servicio de backend, y la política elimina cualquier parámetro de consulta no coincidido.

<!-- 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 -->

Ejemplo 4: Usar la expresión de política en la plantilla

En el siguiente ejemplo, la política utiliza expresiones en la plantilla para construir la petición al backend.

<policies>
    <inbound>
        <base />
        <set-variable name="apiVersion" value="/v3" />
        <rewrite-uri template="@("/api" + context.Variables["apiVersion"] + context.Request.Url.Path)" />
    </inbound>
</policies>

Para más información sobre el trabajo con directivas, vea: