Concatenamento di proxy API

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Puoi specificare che un proxy sia l'endpoint di destinazione di un altro, connettendo di fatto i due proxy in una catena di proxy. La concatenazione dei proxy in questo modo può aiutarti a evitare un hop di rete, migliorando quindi le prestazioni complessive.

Con il concatenamento dei proxy, specifichi che un proxy è l'endpoint di destinazione locale dell'altro. Anziché utilizzare l'elemento HTTPTargetConnection per effettuare una chiamata al secondo proxy, utilizza l'elemento LocalTargetConnection.

<LocalTargetConnection>
    <APIProxy>myproxy2</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

La catena di proxy potrebbe essere utile se hai un proxy che offre alcune funzionalità discrete di basso livello che verranno utilizzate da altri proxy. Ad esempio, un proxy che espone operazioni di creazione/lettura/aggiornamento/eliminazione con un datastore di backend potrebbe essere il proxy di destinazione per diversi altri proxy che espongono i dati ai client.

Video: guarda un breve video per scoprire di più sul concatenamento dei proxy API.

Come funziona il concatenamento dei proxy

Il concatenamento dei proxy utilizza una connessione locale per ridurre al minimo l'overhead di rete quando si chiama un proxy da un altro. Questa connessione locale è più efficiente perché ignora funzionalità di rete come bilanciatori del carico, router e processori di messaggi.

Quanto segue illustra la differenza tra la connessione dei proxy con HTTPTargetConnection e LocalTargetConnection (concatenamento di proxy):

Diagramma della chiamata da proxy a proxy senza concatenamento di proxy.

Diagramma della chiamata da proxy a proxy con concatenamento dei proxy.

Puoi connettere i proxy specificando che uno è un endpoint di destinazione locale dell'altro. Per la configurazione nel diagramma riportato sopra (chiamata da proxy a proxy con concatenamento proxy), devi specificare che ProxyB (/proxyB) è un endpoint di destinazione locale di ProxyA (/proxyA). Questo causa l'inoltro delle richieste che arrivano a ProxyA a ProxyB.

Puoi creare una connessione locale tra proxy in due modi:

  • Specificando il nome del proxy di destinazione e un nome ProxyEndpoint
  • specificando un percorso dell'endpoint proxy di destinazione

Puoi connettere i proxy di destinazione all'interno di una configurazione TargetEndpoint utilizzando un elemento LocalTargetConnection, come descritto di seguito.

Connessione dei proxy per nome proxy

Puoi specificare il proxy di destinazione per nome. Potresti scoprire che questa funzionalità è particolarmente utile quando crei la connessione fin dall'inizio e sviluppi insieme i proxy. Se non conosci il nome (o il nome potrebbe cambiare), valuta la possibilità di connetterti al percorso dell'endpoint del proxy di destinazione, come descritto di seguito.

Quando ti connetti a un proxy di destinazione per nome, specifichi il nome del proxy e il nome del suo ProxyEndpoint.

L'esempio seguente specifica un proxy di destinazione denominato data-manager, insieme al nome ProxyEndpoint esposto da data-manager. Per ulteriori informazioni, consulta la documentazione di riferimento sulla configurazione del proxy API.

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <APIProxy>data-manager</APIProxy>
        <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
</TargetEndpoint>

Connessione dei proxy per percorso

Puoi specificare il proxy di destinazione tramite il relativo percorso dell'endpoint. Ti consigliamo di farlo in questo modo quando non conosci il nome del proxy o quando il nome potrebbe cambiare.

Se il proxy è semplicemente il consumer del proxy di destinazione, ad esempio quando non li stai sviluppando entrambi, il percorso potrebbe essere il modo più affidabile per connettersi. Ad esempio, se il proxy a cui ti stai collegando è stato sviluppato e gestito da un altro team, potresti voler connetterti utilizzando un percorso endpoint affidabile.

L'esempio seguente specifica un proxy di destinazione in /v1/streetcarts/foodcarts/data-manager, in cui si presume che l'host sia identico al proxy corrente. Per ulteriori informazioni, consulta la sezione Riferimento alla configurazione del proxy API.

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <Path>/v1/streetcarts/foodcarts/data-manager</Path>
    </LocalTargetConnection>
</TargetEndpoint>

L'elemento <Path> in <LocalTargetConnection> può essere una stringa oppure puoi utilizzare un modello di messaggio per assegnare un valore in modo dinamico.

Connessione dei proxy tramite l'interfaccia utente di Apigee

Puoi anche connettere i proxy, tramite nome proxy o percorso, utilizzando l'UI di Apigee. Nell'esempio seguente, sono presenti due proxy, ProxyA e ProxyB, e vuoi che ProxyB sia un endpoint di destinazione di ProxyA. Per connettere i proxy in base al nome del proxy:

  1. Accedi all'interfaccia utente di Apigee.
  2. Seleziona Sviluppo > Proxy nel riquadro a sinistra.
  3. Nell'elenco dei proxy, seleziona ProxyA.
  4. Fai clic sulla scheda Sviluppo.
  5. Nel riquadro Codice, sostituisci la sezione <TargetEndpoint> del file XML con quanto segue:
    <TargetEndpoint>
      <LocalTargetConnection>
        <APIProxy>ProxyB</APIProxy>
        <ProxyEndpoint>default</ProxyEndpoint>
      </LocalTargetConnection>
    </TargetEndpoint>
  6. Fai clic su Salva.

Proxy concatenati, prodotti API e sicurezza

Il concatenamento dei proxy è ideale nei casi in cui entrambi i proxy si trovano nello stesso prodotto API. Per impostazione predefinita, entrambi sono disponibili per i client. Attualmente Apigee non supporta il raggruppamento del secondo proxy in un prodotto API separato a cui i client non dovrebbero avere accesso.

Se il secondo proxy deve essere protetto contro le richieste del client diretto, valuta la possibilità di aggiungere la logica per fare in modo che il secondo proxy esamini l'indirizzo IP del client. Nel caso di una chiamata effettuata con concatenamento, l'indirizzo IP sarà locale. Il tuo codice può confermare che sia locale prima di consentire il proseguimento dell'elaborazione. Per scoprire un modo per farlo, consulta il criterio AccessControl.