Questa pagina si applica a Apigee e Apigee ibridi.
Visualizza documentazione di Apigee Edge.
Cosa
Il criterio ExternalCallout ti consente di inviare richieste gRPC al tuo server gRPC per implementare un comportamento personalizzato non supportato dai criteri Apigee. Nel codice del server, puoi accedere e modificare facilmente le variabili di flusso all'interno del flusso di un proxy.
Apigee comunica con un server gRPC tramite un criterio di callout esterno mediante un'API. Apigee utilizza l'API per inviare variabili di flusso al server gRPC. Nel server gRPC puoi leggere e, a seconda della variabile, modificare le variabili di flusso elencate nella pagina di riferimento Voci di flusso, nonché le variabili aggiuntive specificate nel file XML del criterio.
Se configuri il server gRPC con Apigee e includi questo criterio in un proxy, Apigee gestirà le richieste API nel seguente modo:
- Apigee invia un messaggio contenente le variabili di flusso al tuo server gRPC.
- Il codice del server gRPC viene eseguito, accedendo e modificando le variabili come definito nel codice. Il server gRPC quindi invia una risposta contenente tutte le variabili di flusso ad Apigee.
- Apigee legge la risposta dal server gRPC. Se vengono aggiunte variabili o se le variabili di flusso modificabili vengono modificate, queste vengono aggiornate in Apigee.
Questo criterio è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Per informazioni sui tipi di criteri e sulla disponibilità per ciascun tipo di ambiente, consulta Tipi di criteri.
Per scoprire di più sull'invio di richieste gRPC, consulta i seguenti link:
<ExternalCallout>
Definisce un criterio per i callout esterni.
<ExternalCallout async="true" continueOnError="true" enabled="true" name="EC">
Questo elemento ha i seguenti attributi comuni a tutti i criteri:
Attributo | Predefinito | Obbligatorio? | Descrizione |
---|---|---|---|
name |
N/A | Obbligatorio |
Il nome interno del criterio. Il valore dell'attributo Facoltativamente, utilizza l'elemento |
continueOnError |
falso | Facoltativo | Imposta su false per restituire un errore in caso di errore del criterio. Questo è un comportamento previsto per
la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un errore nel criterio. Vedi anche:
|
enabled |
true | Facoltativo | Imposta su true per applicare il criterio. Imposta su false per disattivare il
criterio. Il criterio non verrà applicato anche se rimane collegato a un flusso. |
async |
falso | Deprecato | Questo attributo è stato ritirato. |
Nella tabella seguente vengono descritti gli elementi secondari di
<ExternalCallout>
.
Elemento secondario | Obbligatorio | Descrizione |
---|---|---|
<TimeoutMs> |
Obbligatorio | Il timeout della richiesta in millisecondi per le richieste gRPC. |
<GrpcConnection> |
Obbligatorio | Specifica il nome di un TargetServer esistente da utilizzare come server gRPC
a cui inviare richieste.
|
<Configurations> |
Facoltativo | Consente di configurare vari aspetti del criterio ExternalCallout,
inclusi gli elementi <Property> e <FlowVariable> .
|
Esempio 1
Esempi pratici di callout esterni sono disponibili nella sezione External Callout Samples (Campioni di callout esterni) su GitHub.
L'esempio seguente illustra la configurazione di un criterio per i callout esterni.
<ExternalCallout enabled="true" continueOnError="false" name="ExternalCallout-1"> <DisplayName>External Callout 1</DisplayName> <TimeoutMs>5000</TimeoutMs> <GrpcConnection> <Server name="external-target-server"/> </GrpcConnection> <Configurations> <Property name="with.request.content">true</Property> <Property name="with.request.headers">false</Property> <Property name="with.response.content">true</Property> <Property name="with.response.headers">false</Property> <FlowVariable>example1.flow.variable</FlowVariable> <FlowVariable>example2.flow.variable</FlowVariable> </Configurations> <ExternalCallout>
L'esempio invia una richiesta a un server gRPC esterno rappresentato da
TargetServer denominato external-target-server
, con le seguenti configurazioni:
<Property>
: includi i contenuti della richiesta e della risposta, ma non le intestazioni della richiesta e della risposta, nella richiesta inviata al server gRPC.<FlowVariable>
: includi dati aggiuntivi variabili di flussoexample1.flow.variable
eexample2.flow.variable
, specificato dagli elementiFlowVariable
, nella richiesta inviata a gRPC server web.
Esempio 2
Nell'esempio seguente, l'attributo useTargetUrl
dell'elemento Audience
è impostato su true
. Quando useTargetUrl
è true
,
il nome host del server di destinazione gRPC viene utilizzato come pubblico. Ad
esempio, se l'host del server è my-grpc-server-java.a.run.app
, il segmento di pubblico
utilizzato sarà https://my-grpc-server-java.a.run.app
.
<ExternalCallout continueOnError="false" enabled="true" name="External-Callout-1"> <DisplayName>External-Callout-1</DisplayName> <GrpcConnection> <Server name="cloud_run_server_name"/> <Authentication> <GoogleIDToken> <Audience useTargetUrl="true"/> </GoogleIDToken> </Authentication> </GrpcConnection> <TimeoutMs>5000</TimeoutMs> <Configurations> <Property name="with.request.content">true</Property> <Property name="with.request.headers">true</Property> <Property name="with.response.content">true</Property> <Property name="with.response.headers">true</Property> <FlowVariable>example.flow.variable</FlowVariable> <FlowVariable>another.flow.variable</FlowVariable> </Configurations> </ExternalCallout>