Informazioni sulle route

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Una route determina il percorso di una richiesta da ProxyEndpoint a TargetEndpoint. La route include l'URL utilizzato per accedere a ProxyEndpoint del proxy API e l'URL del servizio di backend definito da TargetEndpoint.

Guarda questo video per un'introduzione alle route, che descrive la relazione tra il ProxyEndpoint e il TargetEndpoint.

Determinare l'URL dell'endpoint del proxy API

L'immagine seguente mostra una richiesta in arrivo a ProxyEndpoint da un'app e quella richiesta indirizzata al servizio di backend:

Dopo aver creato un proxy API su Edge, l'URL predefinito che un'app utilizza per accedere al proxy ha il seguente formato:

http://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

https://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

dove:

  • {org-name} è il nome dell'organizzazione. Questo nome viene creato quando crei un account su Edge.
  • {env-name} è il nome dell'ambiente Edge. Per impostazione predefinita, tutte le organizzazioni Apigee create nel cloud vengono sottoposte a provisioning con due ambienti: "test" e "prod". Quando esegui il deployment di un proxy API, puoi scegliere di eseguirlo in uno o in entrambi gli ambienti.
  • {base-path} e {resource-path} vengono definiti quando crei il proxy API.

Quando una richiesta arriva a Edge, Edge analizza l'URL per indirizzare la richiesta al ProxyEndpoint corretto. Ad esempio, il seguente URL viene utilizzato per accedere a un proxy API su Edge:

http://myOrg-prod.apigee.net/v1/weather/forecastrss

Se esamini la definizione di ProxyEndpoint per il proxy API nella figura sopra, puoi vedere come questo URL viene analizzato da Edge:

  1. La parte del dominio dell'URL, http://myOrg-prod.apigee.net, corrisponde a un host virtuale su Edge. Nella definizione di ProxyEndpoint sopra, il proxy API utilizza il <VirtualHost> tag per fare riferimento a un host virtuale denominato default. Puoi avere più host virtuali definiti nel tuo ambiente.

    Un host virtuale definisce i domini e le porte su cui è esposto un proxy API. Un host virtuale definisce anche se si accede al proxy API utilizzando il protocollo HTTP o il protocollo HTTPS criptato. Per informazioni dettagliate sugli host virtuali, consulta Informazioni sugli host virtuali (beta).
  2. La seconda parte dell'URL, /v1/weather, è determinata dall'elemento <BasePath> in ProxyEndpoint. Il percorso di base deve essere univoco per il proxy API per l'ambiente, in modo che due proxy API non abbiano lo stesso percorso di base.
  3. La terza parte dell'URL, /forecastrss, è una risorsa definita dal proxy API con il flusso condizionale corrispondente definito dal <Flows> tag.

Video: guarda un breve video per scoprire di più sugli endpoint del proxy API.

Determinare l'URL dell'endpoint di destinazione

Il tag <RouteRule> in una definizione di ProxyEndpoint determina la destinazione del proxy API e viene valutato dopo l'elaborazione di tutte le policy in PreFlow, Flussi condizionali e PostFlow della richiesta ProxyEndpoint.

Un ProxyEndpoint può definire la destinazione come:

  • Un URL diretto a un servizio di backend.
  • Una singola definizione di TargetEndpoint.
  • Più TargetEndpoint in cui il proxy API delega la richiesta a un endpoint di destinazione in base a una condizione.
  • Route o destinazione nulla, il che significa che la richiesta non viene inoltrata a una destinazione. Al contrario, tutta l' elaborazione della richiesta e la generazione della risposta avvengono su Edge.

Video: guarda un breve video per scoprire di più sugli endpoint di destinazione.

URL diretto

Un ProxyEndpoint può richiamare direttamente un servizio di backend, ignorando qualsiasi configurazione di TargetEndpoint denominata. Ad esempio, il seguente <RouteRule> effettua sempre una chiamata HTTP a http://api.mycompany.com/myAPI:

<RouteRule name="default">
  <URL>http://api.mycompany.com/myAPI</URL> 
</RouteRule>

Tuttavia, poiché non esiste un TargetEndpoint, puoi aggiungere policy solo ai flussi definiti da ProxyEndpoint.

Destinazione singola

In una definizione di destinazione singola, ProxyEndpoint fa riferimento a una singola definizione di TargetEndpoint per nome, come mostrato nella figura sopra:

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

Tutte le richieste a questo proxy API vengono indirizzate alla stessa definizione di TargetEndpoint. Il <URL> tag in TargetEndpoint determina la posizione del servizio di backend. Nella figura sopra, l'URL di destinazione è http://weather.yahooapis.com.

Destinazioni condizionali

Il tag <RouteRule> ti consente di indirizzare una richiesta a una destinazione in base a una condizione. Puoi utilizzare variabili di flusso, parametri di query intestazioni HTTP, contenuti dei messaggi o informazioni contestuali come l'ora del giorno e le impostazioni internazionali per determinare l'endpoint di destinazione. Ad esempio, puoi includere un'area geografica, come Stati Uniti e Regno Unito, in un URL di richiesta. Puoi quindi instradare una richiesta a un endpoint di destinazione in base alla regione.

La seguente regola di instradamento valuta un'intestazione HTTP in una richiesta. Se l'intestazione HTTP routeTo ha il valore TargetEndpoint1, la richiesta viene inoltrata a TargetEndpoint denominato TargetEndpoint1. In caso contrario, la richiesta viene inoltrata a TargetEndpoint2.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
 <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

Se hai più regole di route, creane una come "predefinita", ovvero come regola di route senza condizioni. Assicurati che la regola di instradamento predefinita sia definita per ultima nell'elenco delle route condizionali, perché le regole vengono valutate dall'alto verso il basso in ProxyEndpoint.

Vedi anche Route condizionali e Riferimento alle condizioni.

Video: guarda un breve video per scoprire come instradare a un endpoint di destinazione utilizzando le destinazioni condizionali.

Route nulla

Una route nulla supporta gli scenari in cui il messaggio di richiesta non deve essere inoltrato a un TargetEndpoint. Questa opzione è utile quando ProxyEndpoint esegue tutta l'elaborazione necessaria, ad esempio utilizzando JavaScript per chiamare un servizio esterno.

L'esempio seguente definisce una route nulla:

<RouteRule name="GoNowhere"/>

Scopri di più