Concatenamento di proxy API

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

Puoi specificare che un proxy sia l'endpoint di destinazione di un altro, collegando di fatto i due proxy in una catena di proxy. Il concatenamento dei proxy in questo modo può aiutarti a evitare un hop di rete e quindi a migliorare il rendimento complessivo.

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, utilizzi l'elemento LocalTargetConnection.

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

Il concatenamento dei proxy può essere utile quando hai un proxy che offre alcune funzionalità discrete di basso livello che altri proxy utilizzeranno. Ad esempio, un proxy che espone operazioni di creazione/lettura/aggiornamento/eliminazione con un datastore di backend potrebbe essere il proxy di destinazione per più 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 il sovraccarico di rete quando si chiama un proxy da un altro. Questa connessione locale è più efficiente perché bypassa le funzionalità di rete come bilanciatori del carico, router ed elaboratori di messaggi.

Di seguito viene illustrata la differenza tra la connessione dei proxy utilizzando HTTPTargetConnection e LocalTargetConnection (concatenamento dei proxy):

Colleghi i proxy specificando che uno è un endpoint di destinazione locale dell'altro. Puoi creare una connessione locale tra i proxy in due modi:

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

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

Connessione dei proxy per nome proxy

Puoi specificare il proxy di destinazione per nome. Potresti scoprire che questo è più utile quando crei la connessione dall'inizio e sviluppi i proxy insieme. Se non conosci il nome (o il nome potrebbe cambiare), valuta la possibilità di connetterti con il 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 relativo ProxyEndpoint.

L'esempio seguente specifica un proxy di destinazione denominato data-manager, insieme a il ProxyEndpoint nome esposto da data-manager. Per informazioni di riferimento, consulta Riferimento per la configurazione dei 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 in base al percorso dell'endpoint. Potresti volerlo fare 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 connetterti. Ad esempio, se il proxy a cui ti stai connettendo è sviluppato e gestito da un altro team, potresti voler connetterti utilizzando un percorso dell'endpoint affidabile.

L'esempio seguente specifica un proxy di destinazione in /v1/streetcarts/foodcarts/data-manager, dove si presuppone che l'host sia lo stesso di quello del proxy corrente. Per informazioni di riferimento, consulta Riferimento per la configurazione dei 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>

Connessione dei proxy con la console di gestione

Puoi creare connessioni di concatenamento dei proxy utilizzando la console di gestione Edge.

  1. Apri il proxy che utilizzerà il proxy di destinazione.
  2. Nel navigatore, fai clic sul segno Più accanto a Endpoint di destinazione.
  3. Nella finestra di dialogo Nuovo endpoint di destinazione, inserisci il nome dell'endpoint di destinazione.
  4. Sotto la casella Nome endpoint di destinazione, seleziona una delle seguenti opzioni:
    • Concatenamento dei proxy per selezionare da un elenco di proxy già presenti nell'organizzazione e nell'ambiente.
      1. Nel menu a discesa Nome proxy, seleziona il proxy di destinazione.
      2. Nella casella Endpoint proxy, inserisci il percorso dell'endpoint del proxy di destinazione a cui vuoi connetterti.
    • Concatenamento dei percorsi per inserire il percorso di base del proxy di destinazione, ad esempio /mypath/myproxy/myendpoint.
  5. Fai clic su Aggiungi.

Proxy concatenati, prodotti API e sicurezza

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

Se il secondo proxy deve essere protetto dalle richieste dirette dei client, valuta la possibilità di aggiungere una logica per fare in modo che il secondo proxy esamini l'indirizzo IP del client. Nel caso di una chiamata effettuata tramite concatenamento, l'indirizzo IP sarà locale. Il codice può verificare che sia locale prima di consentire la continuazione dell'elaborazione. Consulta il criterio Controllo dell'accesso per un modo per farlo.