Set backend service (Imposta servizio back-end)

SI APPLICA A: Tutti i livelli di Gestione API

Usare il criterio set-backend-service per reindirizzare una richiesta in ingresso a un back-end diverso da quello specificato nelle impostazioni dell'API per l'operazione. Questi criteri cambiano l'URL di base del servizio back-end della richiesta in arrivo con un URL o back-end specificato nei criteri.

Fare riferimento a un'entità back-end consente di gestire l'URL di base del servizio back-end e altre impostazioni in un'unica posizione e riutilizzarle tra più API e operazioni. Implementare anche il bilanciamento del carico del traffico in un pool di servizi back-end e le regole di interruttore per proteggere il back-end da troppe richieste.

Nota

Le entità back-end possono essere gestite tramite il portale di Azure, l'API di gestione e PowerShell.

Nota

Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione del criterio. Altre informazioni su come impostare o modificare i criteri di API Management.

Istruzione del criterio

<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" />

Attributi

Attributo Descrizione Richiesto Valore predefinito
base-url Nuovo URL di base del servizio back-end. Le espressioni di criteri sono consentite. Uno di base-url o backend-id deve essere presente. N/D
backend-id Identificatore (nome) del back-end per instradare la replica primaria o secondaria di una partizione. Le espressioni di criteri sono consentite. Uno di base-url o backend-id deve essere presente. N/D
sf-resolve-condition Applicabile solo quando il back-end è un servizio di Service Fabric. Condizione che identifica se la chiamata al back-end di Service Fabric deve essere ripetuta con una nuova risoluzione. Le espressioni di criteri sono consentite. NO N/D
sf-service-instance-name Applicabile solo quando il back-end è un servizio di Service Fabric. Consente di modificare le istanze del servizio durante il runtime. Le espressioni di criteri sono consentite. NO N/D
sf-partition-key Applicabile solo quando il back-end è un servizio di Service Fabric. Specifica la chiave di partizione di un servizio di Service Fabric. Le espressioni di criteri sono consentite. NO N/D
sf-replica-type Applicabile solo quando il back-end è un servizio di Service Fabric. Specifica se la richiesta deve essere instradata alla replica primaria o secondaria di una partizione. I valori validi sono primary e secondary. Le espressioni di criteri sono consentite. NO N/D
sf-listener-name Applicabile solo quando il back-end è un servizio di Service Fabric e viene specificato tramite backend-id. Reliable Services di Service Fabric consente di creare più listener in un servizio. Questo attributo viene usato per selezionare un listener specifico quando un'istanza di Reliable Services back-end ha più di un listener. Se questo attributo non viene specificato, il servizio Gestione API tenterà di usare un listener senza nome. Un listener senza nome è tipico di un'istanza di Reliable Services con un solo listener. Le espressioni di criteri sono consentite. NO N/D

Importante

L'accesso collegato non viene controllato quando un backend viene riferito usando backend-id. Un utente che ha il permesso di scrivere una policy può fare riferimento a qualsiasi backend disponibile e instradare le richieste attraverso di esso, utilizzando le impostazioni configurate dal backend, anche se l'utente non ha accesso di lettura alla risorsa backend.

Utilizzo

Note sull'utilizzo

Attualmente, se si definiscono criteri di base set-backend-service usando l'attributo backend-id e si ereditano i criteri di base usando <base /> all'interno dell'ambito, è possibile eseguirne l'override solo con dei criteri che usano l'attributo backend-id, non quello base-url.

Esempi

Indirizzare la richiesta in base al valore nella stringa di query

In questo esempio i criteri set-backend-service indirizzano le richieste in base al valore di versione passato nella stringa di query a un servizio back-end diverso rispetto a quello specificato nell'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>

Inizialmente l'URL di base del servizio back-end è quello specificato nelle impostazioni dell'API. Pertanto, l'URL della richiesta https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef diventa http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef dove http://contoso.com/api/10.4/ è l'URL del servizio back-end specificato nelle impostazioni dell'API.

Quando viene applicata l'istruzione dei criteri <choose>, l'URL di base del servizio back-end può essere di nuovo modificato in http://contoso.com/api/8.2 o http://contoso.com/api/9.1, a seconda del valore del parametro della query versione richiesta. Se, ad esempio, il valore è "2013-15", l'URL della richiesta finale sarà http://contoso.com/api/8.2/partners/15?version=2013-15&subscription-key=abcdef.

Se occorre un'ulteriore trasformazione della richiesta, è possibile usare altri criteri di trasformazione. Ad esempio, per rimuovere il parametro della query di versione una volta instradata la richiesta verso un back-end specifico, ad esempio, è possibile usare il criterio Imposta parametro della stringa di query per rimuovere l'attributo della versione divenuta ridondante.

Indirizzare le richieste a un back-end di Service Fabric

In questo esempio il criterio indirizza la richiesta a un back-end dell'infrastruttura del servizio tramite la stringa di query dell'ID utente come chiave di partizione e tramite la replica della partizione primaria.

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

Per ulteriori informazioni sull'utilizzo dei criteri, vedere: