Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Una route determina il percorso di una richiesta da ProxyEndpoint
a
TargetEndpoint
. Il percorso include l'URL utilizzato per accedere all'API
ProxyEndpoint
e l'URL del servizio di backend definito da
TargetEndpoint
.
Guarda questo video per un'introduzione alle route, che descrive la relazione tra
ProxyEndpoint
e TargetEndpoint
.
Determinazione dell'URL dell'endpoint del proxy API
L'immagine seguente mostra una richiesta in arrivo a ProxyEndpoint
da un'app e la richiesta indirizzata al servizio di backend:
Dopo aver creato un proxy API su Apigee, l'URL predefinito che un'app utilizza per accedere al proxy ha il seguente formato:
https://www.example.com/shopping/cart/addItem |_____________| |___________| |_____| | | | hostname basepath resource
Dove:
- Il nome host è un dominio che hai aggiunto al DNS o un indirizzo IP.
- Il percorso di base e il percorso della risorsa vengono definiti quando crei il proxy API.
Quando arriva una richiesta ad Apigee, Apigee analizza l'URL per indirizzare la richiesta al ProxyEndpoint
corretto. Ad esempio, il seguente URL viene utilizzato per accedere a un proxy API:
http://example.com/v1/weather/forecastrss
Se esamini la definizione di ProxyEndpoint
per il proxy API nella figura precedente,
puoi vedere come viene analizzato questo URL:
- La parte del dominio dell'URL,
http://example.com
, corrisponde a un nome host definito in un gruppo di ambienti. Il proxy è stato implementato in uno o più ambienti all'interno di quel gruppo di ambienti. Per maggiori informazioni, vedi Informazioni su ambienti e gruppi di ambienti. - La seconda parte dell'URL,
/v1/weather
, è determinata dall'elemento<BasePath>
inProxyEndpoint
. Hai definito il percorso di base quando hai creato il proxy. Il percorso di base deve essere univoco per il proxy API per l'ambiente, in modo che due proxy API nello stesso ambiente non abbiano lo stesso percorso di base. - La terza parte dell'URL,
/forecastrss
, è una risorsa definita dal proxy API con il flusso condizionale corrispondente definito dall'elemento<Flows>
.
Video:guarda un breve video per scoprire di più sugli endpoint proxy API.
Determinazione dell'URL dell'endpoint di destinazione
L'elemento <RouteRule>
in una definizione ProxyEndpoint
determina la destinazione del proxy API e viene valutato dopo l'elaborazione di tutti i criteri in PreFlow, nei flussi condizionali e in PostFlow della richiesta ProxyEndpoint
.
Un ProxyEndpoint
può definire il target 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. - Percorso o target nullo, il che significa che la richiesta non viene inoltrata a un target. Tutta l'elaborazione della richiesta e la generazione della risposta avviene su Apigee.
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 TargetEndpoint
denominata. Ad esempio, il seguente <RouteRule>
esegue sempre una chiamata HTTP
a http://example.com/myAPI:
<RouteRule name="default"> <URL>http://example.com/myAPI</URL> </RouteRule>
Tuttavia, poiché non esiste TargetEndpoint
, puoi aggiungere criteri solo ai flussi definiti da ProxyEndpoint
.
Destinazione singola
In una singola definizione di destinazione, 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 sono indirizzate alla stessa definizione TargetEndpoint
. Il tag
<URL>
nel
TargetEndpoint
determina la posizione del servizio di backend. Nella figura sopra,
l'URL di destinazione è http://weather.yahooapis.com
.
Target condizionali
Il tag <RouteRule>
ti consente di indirizzare una richiesta a un target in base a una condizione. Puoi utilizzare variabili di flusso, parametri di query, intestazioni HTTP, contenuti dei messaggi o informazioni contestuali come ora del giorno e impostazioni internazionali per determinare l'endpoint di destinazione. Ad esempio, potresti includere un'area geografica, come Stati Uniti
e Regno Unito, in un URL di richiesta. Puoi quindi indirizzare una richiesta a un endpoint di destinazione in base alla
regione.
La seguente regola di route 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 percorso, creane una come predefinita, ovvero come regola di percorso senza condizioni. Assicurati che la regola di routing predefinita sia definita per ultima nell'elenco
delle route condizionali, perché le regole vengono valutate dall'alto verso il basso in ProxyEndpoint
.
Consulta anche Percorsi condizionali e Riferimento alle condizioni.
Video: guarda un breve video per scoprire come eseguire il routing 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ù
- Riferimento per la configurazione dei proxy API
- Riferimento per le proprietà degli endpoint
- Bilanciamento del carico tra server di backend