Concatenamento di proxy API

Questa pagina si applica ad Apigee e Apigee hybrid.

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 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à di basso livello discrete 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 più altri proxy che mostrano i dati ai client.

Video: guarda un breve video per scoprire di più sulla catena di proxy API.

Come funziona la catena di 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 sopra (chiamata da proxy a proxy con accodamento di proxy), devi specificare che ProxyB (/proxyB) è un 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 per l'endpoint del 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 target 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 target in base al percorso dell'endpoint. Ti consigliamo di procedere in questo modo se non conosci il nome del proxy o se il nome 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 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 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 Sviluppa > Proxy nel riquadro a sinistra.
  3. Nell'elenco dei proxy, seleziona ProxyA.
  4. Fai clic sulla scheda Sviluppa.
  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 per i casi in cui entrambi i proxy si trovino 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, valuta la possibilità di aggiungere la logica per far esaminare al secondo proxy l'indirizzo IP del client. Nel caso di una chiamata effettuata con impostazione in catena, l'indirizzo IP sarà locale. Il codice può convalidare che è locale prima di consentire il proseguimento dell'elaborazione. Consulta il criterio AccessControl per un modo per farlo.