Riferimento per le proprietà degli endpoint

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Questo argomento descrive le proprietà di trasporto che possono essere impostate in TargetEndpoint e ProxyEndpoint configurazioni per controllare i messaggi e il comportamento della connessione. Per una copertura completa di TargetEndpoint e sulla configurazione di ProxyEndpoint, consulta Riferimento alla configurazione del proxy API.

Proprietà di trasporto TargetEndpoint

L'elemento HTTPTargetConnection nelle configurazioni TargetEndpoint definisce un insieme di HTTP proprietà di trasporto. Puoi utilizzare queste proprietà per impostare le configurazioni a livello di trasporto.

Le proprietà vengono impostate sugli elementi HTTPTargetConnection TargetEndpoint come mostrato di seguito:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
    <CommonName>COMMON_NAME_HERE</CommonName>
  </HTTPTargetConnection>
</TargetEndpoint>

Proprietà di trasporto TargetEndpoint Specifiche

Nome proprietà Valore predefinito Descrizione
keepalive.timeout.millis 60000 Timeout di inattività della connessione per la connessione di destinazione nel pool di connessioni. Se nel pool è inattiva oltre il limite specificato, la connessione viene chiuso.
connect.timeout.millis

3000

Timeout connessione di destinazione. Edge restituisce un codice di stato HTTP 503 in caso di connessione si verifica un timeout. In alcuni casi potrebbe essere restituito un codice di stato HTTP 504 quando LoadBalancer viene utilizzato nella definizione di TargetServer e si verifica un timeout.

io.timeout.millis 55000

Se non esistono dati da leggere per il numero di millisecondi specificato o se il socket non è pronto a scrivere dati per il numero di millisecondi specificato, la transazione viene considerato come un timeout.

  • Se si verifica un timeout durante la scrittura della richiesta HTTP, 408, Request Timeout viene restituito.
  • Se si verifica un timeout durante la lettura della risposta HTTP, 504, Gateway Timeout viene restituito.

Questo valore deve sempre essere inferiore al valore dell'attributo proprietà proxy_read_timeout dell'host virtuale.

Questo valore deve essere inferiore al timeout utilizzato dalla Router per la comunicazione con il processore di messaggi. Consulta la sezione Configurazione del timeout del router per altro ancora.

Consulta l'articolo sull'impostazione di io.timeout.millis e api.timeout per Edge. per saperne di più.

supports.http10 true Se questo è true e il client invia una richiesta 1.0, anche al target viene inviata una richiesta 1.0 richiesta. In caso contrario, viene inviata una richiesta 1.1 alla destinazione.
supports.http11 true Se questo è true e il client invia una richiesta 1.1, anche al target viene inviata una richiesta 1.1 richiesta, altrimenti una richiesta 1.0 viene inviata alla destinazione.
use.proxy true Se impostato su true e le configurazioni proxy sono specificate in http.properties (solo deployment on-premise), poi connessioni target sono impostati per utilizzare il proxy specificato.
use.proxy.tunneling true Se questo valore è impostato su true e le configurazioni del proxy sono specificate in http.properties (solo deployment on-premise), quindi scegli come target sono configurate per usare il tunnel specificato. Se la destinazione utilizza TLS/SSL, viene ignorata e il messaggio viene sempre inviato tramite un tunnel.
enable.method.override false Per il metodo HTTP specificato, imposta un'intestazione X-HTTP-Method-Override su la richiesta in uscita al servizio di destinazione. Ad esempio, <Property name="GET.override.method">POST</Property>
*.override.method N/D Per il metodo HTTP specificato, imposta un'intestazione X-HTTP-Method-Override su la richiesta in uscita. Ad esempio, <Property name="GET.override.method">POST</Property>
request.streaming.enabled false

Per impostazione predefinita (false), i payload delle richieste HTTP vengono letti in un buffer e i criteri che possono operare sul lavoro del payload come previsto. Nei casi in cui i payload siano maggiori di dimensione del buffer (10 MB), puoi impostare a true. Quando true, i payload delle richieste HTTP non vengono letti nel buffer. sono trasmessi così com'è all'endpoint di destinazione. In questo caso, tutti i criteri che operano sulle il payload nel flusso di richiesta di TargetEndpoint viene ignorato. Vedi anche Richieste e risposte di flussi di dati.

response.streaming.enabled false

Per impostazione predefinita (false), i payload della risposta HTTP vengono letti in un buffer e i criteri che possono operare sul lavoro del payload come previsto. Nei casi in cui i payload siano maggiori di dimensione del buffer (10 MB), puoi impostare a true. Quando true, i payload della risposta HTTP non vengono letti nel buffer; sono trasmesso così com'è al flusso di risposta ProxyEndpoint. In questo caso, tutti i criteri sul payload nel flusso di risposta TargetEndpoint vengono bypassati. Vedi anche Richieste di streaming e risposte personalizzate.

success.codes N/D

Per impostazione predefinita, Apigee Edge considera il codice HTTP 4XX o 5XX come errori e il codice HTTP 1XX, 2XX, 3XX come operazione riuscita. Questa proprietà consente la definizione esplicita dei codici di successo, ad Ad esempio, 2XX, 1XX, 505 tratta tutti i codici di risposta HTTP 100, 200 e 505 come successo.

L'impostazione di questa proprietà sovrascrive i valori predefiniti. Pertanto, se vuoi aggiungere Codice HTTP 400 all'elenco dei codici di operazione riuscita predefiniti, imposta questa proprietà come:

&lt;Property name="success.codes">1XX,2XX,3XX,400</Property>

Se vuoi che solo il codice HTTP 400 venga considerato come codice di operazione riuscita, imposta la proprietà come:

&lt;Property name="success.codes">400</Property>

Se imposti il codice HTTP 400 come unico codice di operazione riuscita, i codici 1XX, 2XX e 3XX vengono considerati errori.

compression.algorithm N/D Per impostazione predefinita, Apigee Edge inoltra le richieste alla destinazione utilizzando lo stesso tipo di compressione come richiesta del client. Se la richiesta viene ricevuta dal client che utilizza, ad esempio, gzip compressione, Apigee Edge inoltra la richiesta di targeting utilizzando la compressione gzip. Se la risposta ricevuta dalla destinazione utilizza deflate, quindi Apigee Edge inoltra la risposta al il cliente utilizzando deflate. I valori supportati sono:
  • gzip: invia sempre il messaggio utilizzando la compressione gzip
  • deflate: invia sempre il messaggio utilizzando la compressione deflate
  • none: invia sempre i messaggi senza compressione

Vedi anche: Apigee supporta la compressione/decompressione con GZIP/deflate?

request.retain.headers.
enabled
true Per impostazione predefinita, Apigee Edge conserva sempre tutte le intestazioni HTTP sui messaggi in uscita. Se impostato a true, tutte le intestazioni HTTP presenti nella richiesta in entrata sono impostate nel richiesta in uscita.
request.retain.headers N/D Definisce le intestazioni HTTP specifiche della richiesta che devono essere impostate sulla richiesta richiesta al servizio di destinazione. Ad esempio, per eseguire il passthrough di User-Agent imposta il valore di request.retain.headers su User-Agent. Più intestazioni HTTP vengono specificate come elenco separato da virgole, ad esempio: User-Agent,Referer,Accept-Language. Questa proprietà sostituisce request.retain.headers.enabled. Se request.retain.headers.enabled è impostato su false, qualsiasi intestazione specificata La proprietà request.retain.headers è ancora impostata nel messaggio in uscita.
response.retain.headers.
enabled
true Per impostazione predefinita, Apigee Edge conserva sempre tutte le intestazioni HTTP sui messaggi in uscita. Se impostato a true, tutte le intestazioni HTTP presenti nella risposta in entrata dalla destinazione vengono impostati nella risposta in uscita prima che venga passata al ProxyEndpoint.
response.retain.headers N/D Definisce le intestazioni HTTP specifiche della risposta che devono essere impostate sulla risposta prima che venga passata al ProxyEndpoint. Ad esempio, per eseguire il passthrough Expires, imposta il valore di response.retain.headers su Expires. Più intestazioni HTTP vengono specificate come elenco separato da virgole, per ad esempio Expires,Set-Cookie. Questa proprietà sostituisce response.retain.headers.enabled. Se response.retain.headers.enabled è impostato su false, qualsiasi intestazione specificate nella proprietà response.retain.headers siano ancora impostate nel messaggio in uscita.
retain.queryparams.
enabled
true Per impostazione predefinita, Apigee Edge conserva sempre tutti i parametri di query sulle richieste in uscita. Quando impostato su true, tutti parametri di ricerca presenti nella richiesta in entrata sono impostati la richiesta in uscita al servizio di destinazione.
retain.queryparams N/D Definisce i parametri di query specifici da impostare sulla richiesta in uscita. Ad esempio, per includi il parametro di query apikey del messaggio di richiesta, imposta Da retain.queryparams a apikey. Sono disponibili più parametri di query specificato come elenco separato da virgole, ad esempio apikey,environment. Questo sostituisce retain.queryparams.enabled.

Proprietà di trasporto ProxyEndpoint

Gli elementi HTTPTargetConnection ProxyEndpoint definiscono un insieme di proprietà di trasporto HTTP. Questi possono essere usate per impostare configurazioni a livello di trasporto.

Le proprietà vengono impostate sugli elementi HTTPProxyConnection di ProxyEndpoint come segue:

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
</ProxyEndpoint>

Per saperne di più sugli host virtuali, vedi Informazioni sugli host virtuali.

Proprietà di trasporto ProxyEndpoint Specifiche

Nome proprietà Valore predefinito Descrizione
X-Forwarded-For false Se il criterio viene impostato su true, l'indirizzo IP dell'host virtuale viene aggiunto alla richiesta in uscita come dell'intestazione X-Forwarded-For HTTP.
request.streaming.
enabled
false Per impostazione predefinita (false), i payload delle richieste HTTP vengono letti in un buffer e i criteri che possono di eseguire operazioni sul carico utile come previsto. Nei casi in cui i payload siano maggiori rispetto dimensione del buffer (10 MB), puoi impostarla a true. Quando true, i payload delle richieste HTTP non vengono letti nel buffer. sono trasmesso così com'è al flusso di richiesta TargetEndpoint. In questo caso, tutti i criteri che operano sul payload nel flusso di richiesta ProxyEndpoint. Vedi anche Richieste e risposte di flussi di dati.
response.streaming.
enabled
false Per impostazione predefinita (false), i payload della risposta HTTP vengono letti in un buffer e i criteri che possono operare sul lavoro del payload come previsto. Nei casi in cui i payload siano maggiori di dimensione del buffer (10 MB), puoi impostare a true. Quando true, i payload della risposta HTTP non vengono letti nel buffer; sono trasmessi così com'è al client. In questo caso, tutti i criteri che operano sul payload Il flusso di risposta ProxyEndpoint viene ignorato. Vedi anche Richieste e risposte di flussi di dati.
compression.algorithm N/D

Per impostazione predefinita, Apigee Edge rispetta il tipo di compressione impostato per qualsiasi messaggio ricevuto. Per Ad esempio, quando un client invia una richiesta che usa la compressione gzip, Apigee Edge inoltra la richiesta alla destinazione utilizzando la compressione gzip. Puoi configurare la compressione applicati in modo esplicito impostando questa proprietà nel TargetEndpoint ProxyEndpoint. I valori supportati sono:

  • gzip: invia sempre il messaggio utilizzando la compressione gzip
  • deflate: invia sempre il messaggio utilizzando la compressione deflate
  • none: invia sempre i messaggi senza compressione

Vedi anche: Apigee supporta la compressione/decompressione con GZIP/deflate?

api.timeout N/D

Configurare il timeout per singoli proxy API

Puoi configurare proxy API, anche quelli con streaming abilitato, la scadenza del periodo di tempo specificato con stato 504 Gateway Timeout. Il caso d'uso principale è per i clienti con proxy API la cui esecuzione richiede più tempo. Ad esempio, supponiamo che tu abbia bisogno di proxy specifici per il timeout alle 3 minuti. Di seguito è indicato come useresti api.timeout.

  1. Innanzitutto, assicurati di configurare il bilanciatore del carico, il router e il processore di messaggi scadono dopo tre minuti.
  2. Quindi, configura i proxy pertinenti in modo che scadano dopo tre minuti. Specifica il valore in millisecondi. Ad esempio: <Property name="api.timeout">180000</Property>
  3. Tieni presente, tuttavia, che l'aumento dei timeout del sistema potrebbe causare problemi di prestazioni. poiché tutti i proxy senza un'impostazione api.timeout utilizzano il nuovo carico timeout di bilanciatore, router e processore di messaggi. Configura quindi altri proxy API non richiedono timeout più lunghi per utilizzare timeout inferiori. Ad esempio, quanto segue imposta un Timeout del proxy API dopo 1 minuto:
    <Property name="api.timeout">60000</Property>

Non puoi impostare questa proprietà con una variabile.

I clienti che non possono modificare i timeout perimetrali possono anche configurare un proxy API timeout, purché il timeout sia più breve del processore di messaggi Edge standard di 57 secondi.

Consulta l'articolo sull'impostazione di io.timeout.millis e api.timeout per Edge. per saperne di più.

Impostazione di io.timeout.millis e api.timeout per Edge

Su Edge, l'operazione di io.timeout.millis e api.timeout sono correlate. Per ogni richiesta a un proxy API:

  1. Il router invia il proprio valore di timeout al processore di messaggi. Il valore di timeout del router è il valore di proxy_read_timeout impostato dall'host virtuale che gestisce la richiesta o il valore di timeout predefinito di 57 secondi.
  2. Il processore di messaggi imposta quindi api.timeout:
    1. Se api.timeout non è impostato a livello di proxy, impostalo sul timeout del router.
    2. Se il criterio api.timeout è impostato a livello di proxy, impostalo sul processore di messaggi sul inferiore al timeout del router o al valore api.timeout.
  3. Il valore api.timeout specifica la quantità massima di tempo per cui un proxy API ha dalla richiesta API alla risposta.

    Dopo l'esecuzione di ogni criterio nel proxy API, o prima che il processore di messaggi invii la richiesta all'endpoint di destinazione, calcolato dal processore di messaggi (api.timeout - tempo trascorso dall'inizio della richiesta). Se il valore è inferiore a zero, significa che il tempo massimo per gestire la richiesta è scaduto e il processore di messaggi restituisce 504.

  4. Il valore io.timeout.millis specifica la quantità di tempo massima per cui l'endpoint di destinazione deve rispondere.

    Prima di connettersi a un endpoint di destinazione, il processore di messaggi determina il minore tra (api.timeout - tempo trascorso dall'inizio della richiesta) e io.timeout.millis. Quindi, imposta io.timeout.millis su quel valore.

    • Se si verifica un timeout durante la scrittura della richiesta HTTP, 408, Request Timeout viene restituito.
    • Se si verifica un timeout durante la lettura della risposta HTTP, 504, Gateway Timeout viene restituito.

Informazioni su ScriptTarget per le applicazioni Node.js

L'elemento ScriptTarget viene utilizzato per integrare un'applicazione Node.js nel proxy. Per informazioni sull'uso di Node.js e ScriptTarget, consulta:

Informazioni sugli endpoint HostedTarget

Un tag <HostedTarget/> vuoto indica a Edge di utilizzare un Node.js come target dell'applicazione di cui viene eseguito il deployment nell'ambiente Destinazioni ospitate. Per maggiori dettagli, vedi Panoramica dei target ospitati.