Compartir a través de


Definir servicio back-end

SE APLICA A: todos los niveles de API Management

Use la directiva set-backend-service a fin de redirigir una solicitud entrante a un back-end distinto al especificado en la configuración de la API para esa operación. Esta directiva cambia la dirección URL base del servicio back-end de la solicitud entrante a una dirección URL o back-end especificada en la directiva.

Hacer referencia a una entidad de back-end permite administrar la dirección URL base del servicio de back-end y otras configuraciones en un solo lugar, y reutilizarlas en varias API y operaciones. Implemente también el equilibrio de carga del tráfico entre un grupo de servicios back-end y las reglas de disyuntor para proteger el back-end de demasiadas solicitudes.

Nota:

Las entidades de back-end pueden administrarse mediante Azure Portal, la API de administración y PowerShell.

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

<set-backend-service base-url="base URL of the backend service"  backend-id="name of the backend entity specifying base URL of the backend service" sf-resolve-condition="condition" sf-service-instance-name="Service Fabric service name" sf-listener-name="Service Fabric listener name" />

Atributos

Atributo Descripción Necesario Valor predeterminado
base-url Nueva dirección URL base del servicio back-end. Se permiten expresiones de directiva. base-url o backend-id deben estar presentes. N/D
backend-id Identificador (nombre) del back-end para enrutar la réplica principal o secundaria de una partición. Se permiten expresiones de directiva. base-url o backend-id deben estar presentes. N/D
sf-resolve-condition Solo se aplica cuando el back-end es un servicio de Service Fabric. Condición que identifica si la llamada al back-end de Service Fabric tiene que repetirse con la nueva resolución. Se permiten expresiones de directiva. No N/D
sf-service-instance-name Solo se aplica cuando el back-end es un servicio de Service Fabric. Permite cambiar instancias de servicio en tiempo de ejecución. Se permiten expresiones de directiva. No N/D
sf-partition-key Solo se aplica cuando el back-end es un servicio de Service Fabric. Especifica la clave de partición de un servicio de Service Fabric. Se permiten expresiones de directiva. No N/D
sf-listener-name Solo se puede aplicar cuando el back-end es un servicio de Service Fabric y se especifica mediante backend-id. Service Fabric Reliable Services le permite crear varios agentes de escucha en un servicio. Este atributo se utiliza para seleccionar un agente de escucha específico cuando una instancia de Reliable Service de back-end tiene más de un agente de escucha. Si no se especifica este atributo, API Management intentará usar un cliente de escucha sin un nombre. Un agente de escucha sin nombre es típico de las instancias de Reliable Services que tienen un solo agente de escucha. Se permiten expresiones de directiva. No N/D

Uso

Notas de uso

Actualmente, si define una directiva set-backend-service base mediante el atributo backend-id y hereda la directiva base mediante <base /> dentro del ámbito, solo se podrá sustituir por otra directiva mediante el atributo backend-id, no el atributo base-url.

Ejemplos

Enrutamiento de solicitud en función del valor de la cadena de consulta

En este ejemplo, la directiva set-backend-service enruta las solicitudes según el valor de versión pasado en la cadena de consulta a un servicio back-end distinto del especificado en la API.

<policies>
    <inbound>
        <choose>
            <when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2013-05")">
                <set-backend-service base-url="http://contoso.com/api/8.2/" />
            </when>
            <when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2014-03")">
                <set-backend-service base-url="http://contoso.com/api/9.1/" />
            </when>
        </choose>
        <base />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Inicialmente, la dirección URL base del servicio back-end se obtiene a partir de la configuración de la API. Por ello, la dirección URL de solicitud https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef se convierte en http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef, donde http://contoso.com/api/10.4/ se corresponde con la dirección URL del servicio back-end especificada en la configuración de la API.

Cuando se aplica la instrucción de la directiva <choose>, la dirección URL base del servicio back-end puede volver a cambiar a http://contoso.com/api/8.2 o http://contoso.com/api/9.1, en función del valor del parámetro de consulta de la solicitud de la versión. Por ejemplo, si el valor es "2013-15", la dirección URL final de la solicitud se convierte en http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef.

Si se desea aplicar más transformaciones a la solicitud, es posible usar otras directivas de transformación. Por ejemplo, para quitar el parámetro de consulta de la versión ahora que la solicitud se está enrutando a un back-end específico de la versión, se puede usar la directiva de establecimiento del parámetro de cadena de consulta para quitar el atributo de versión, que ahora presenta un carácter redundante.

Enrutamiento de solicitudes a un back-end de Service Fabric

En este ejemplo, la directiva enruta la solicitud a un back-end de Service Fabric, con la cadena de consulta userId como la clave de partición y con la réplica principal de la partición.

<policies>
    <inbound>
        <set-backend-service backend-id="my-sf-service" sf-partition-key="@(context.Request.Url.Query.GetValueOrDefault("userId","")" sf-replica-type="primary" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

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