Concatenamento di proxy API

Questa pagina si applica a Apigee e Apigee ibrido.

Visualizza documentazione di Apigee Edge.

È possibile specificare che un proxy è l'endpoint di destinazione di un altro, connettendo in modo efficace due proxy in una catena di proxy. Concatenare i proxy in questo modo può aiutarti a evitare un hop di rete. quindi 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 potrebbe essere utile quando hai un proxy che offre alcune informazioni discrete di basso livello le funzionalità utilizzate da altri proxy. Ad esempio, un proxy che espone operazioni di creazione/lettura/aggiornamento/eliminazione con un data store di backend potrebbe essere il proxy di destinazione per più altri proxy che mostrano i dati ai client.

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

Come funziona il concatenamento dei proxy

La catena di proxy utilizza una connessione locale per ridurre al minimo il sovraccarico della rete quando si chiama un proxy da un altro. Questa connessione locale è più efficiente perché aggira le funzionalità di rete come bilanciatori del carico, router ed elaboratori di messaggi.

Di seguito è illustrata la differenza tra la connessione dei proxy con HTTPTargetConnection e LocalTargetConnection (catena di proxy):

Diagramma di una chiamata da proxy a proxy senza accodamento di proxy.

Diagramma di una chiamata da proxy a proxy con il chaining del proxy.

Collega i proxy specificando che uno è un endpoint di destinazione locale dell'altro. Per la configurazione nel diagramma precedente (chiamata da proxy a proxy con concatenamento di proxy), devi specificare che ProxyB (/proxyB) è un l'endpoint di destinazione locale di ProxyA (/proxyA). Di conseguenza, le richieste in arrivo su ProxyA vengono inoltrate a ProxyB.

Puoi creare una connessione locale tra i proxy in due modi:

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

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

Connessione dei proxy per nome

Puoi specificare il proxy di destinazione per nome. Questa opzione potrebbe essere particolarmente utile quando crei la connessione dall'inizio e sviluppi i proxy insieme. Se non conosci il nome (o se il nome potrebbe cambiare), ti consigliamo di collegarti 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 chiamato data-manager, nonché il nome ProxyEndpoint esposto da data-manager. Per informazioni di riferimento, consulta la sezione 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 endpoint. Potresti voler procedere in questo modo quando non conosci il nome del proxy o quando potrebbe cambiare.

Se il tuo proxy è semplicemente il consumatore 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 colleghi è sviluppato e gestito da un altro team, ti consigliamo di effettuare la connessione utilizzando un percorso dell'endpoint affidabile.

L'esempio seguente specifica un proxy di destinazione su /v1/streetcarts/foodcarts/data-manager, dove si presume che l'host sia uguale al proxy corrente. Per informazioni di riferimento, consulta la sezione 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>

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 mediante la UI di Apigee

Puoi anche collegare i proxy in base al nome o al percorso del proxy utilizzando l'interfaccia utente di Apigee. Nell'esempio seguente sono presenti due proxy, ProxyA e ProxyB, e vuoi che ProxyB sia un endpoint di destinazione di ProxyA. Per collegare i proxy in base al nome, segui questi passaggi:

  1. Accedi all'interfaccia utente di Apigee.
  2. Seleziona Sviluppo > Proxy nel riquadro di sinistra.
  3. Nell'elenco dei proxy, seleziona ProxyA.
  4. Fai clic sulla scheda Sviluppo.
  5. Nel riquadro Codice, sostituisci la sezione <TargetEndpoint> di l'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 per i casi in cui entrambi i proxy si trovino nello stesso prodotto API. Per impostazione predefinita, entrambi disponibili per i clienti. 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 del client, ti consigliamo di aggiungere la logica per far esaminare al secondo proxy l'indirizzo IP del client. Nel caso di una chiamata effettuata con concatenatione, l'indirizzo IP sarà locale. Il codice può convalidare che è locale prima di consentire il proseguimento dell'elaborazione. Per istruzioni su come eseguire questa operazione, vedi il criterio AccessControl.