Concatenamento di proxy API

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza la documentazione di Apigee Edge.

Puoi specificare che un proxy è l'endpoint di destinazione di un altro, collegando efficacemente i due proxy in una catena di proxy. Incatenare i proxy in questo modo può aiutarti a evitare un salto di rete e quindi a migliorare il rendimento complessivo.

Con la catena di proxy, specifichi che un proxy è l'endpoint di destinazione locale dell'altro. Anziché utilizzare l'elemento HTTPTargetConnection per effettuare una chiamata al secondo utilizzare 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à di basso livello discrete che verranno 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 espongono i dati ai client.

Video: guarda un breve video per scoprire di più sulla catena di 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 chiamata da proxy a proxy senza accodamento di proxy.

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

Puoi connettere 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 proxy

Puoi specificare il proxy target per nome. Questo è particolarmente utile quando creando la connessione fin dall'inizio e sviluppando insieme i proxy. 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 denominato 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 target in base al percorso dell'endpoint. Potresti voler procedere in questo modo quando non conosci il nome del proxy o quando potrebbe cambiare.

Se il tuo proxy è semplicemente il consumer del proxy di destinazione, ad esempio quando non sei e sviluppare entrambi: il percorso potrebbe essere il modo più affidabile per entrare in contatto. 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 in /v1/streetcarts/foodcarts/data-manager, dove si presume che l'host sia identico a il 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 utilizzando l'interfaccia utente 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 ProxyB come endpoint di destinazione di ProxyA. Per collegare i proxy in base al nome, segui questi passaggi:

  1. Accedi all'UI di Apigee.
  2. Seleziona Sviluppa > 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 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. 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 concatenato, l'indirizzo IP sarà locale. Il tuo codice può verificare che sia locale prima di consentire in fase di elaborazione per continuare. Per istruzioni su come eseguire questa operazione, vedi il criterio AccessControl.