Riferimento per le proprietà degli endpoint

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questo argomento descrive le proprietà di trasporto che possono essere impostate nelle configurazioni TargetEndpoint e ProxyEndpoint per controllare il comportamento dei messaggi e della connessione. Per la copertura completa delle opzioni di configurazione TargetEndpoint e ProxyEndpoint, consulta il riferimento sulla configurazione del proxy API.

Proprietà Trasporto endpoint target

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

Le proprietà sono impostate su TargetEndpoint elementi HTTPTargetConnection, come mostrato in questa configurazione di esempio:

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

Specifica della proprietà di trasporto TargetEndpoint

Nome proprietà Valore predefinito Descrizione
allow.post.without.content.length false Ti consente di inviare richieste POST senza contenuti nel corpo.
allow.put.without.content.length false Ti consente di inviare richieste PUT senza contenuti nel corpo.
allow.tls.session.resumption true Se i client true (impostazione predefinita) riutilizzano le sessioni TLS quando creano nuove connessioni alla destinazione. Imposta su false se non vuoi il riutilizzo della sessione TLS. Il riutilizzo delle sessioni in genere significa tempi di connessione più brevi, ma alcuni target potrebbero non supportare il riutilizzo delle sessioni o avere difficoltà.
keepalive.timeout.millis 60.000 Timeout di inattività della connessione per la connessione di destinazione nel pool di connessioni. Se la connessione nel pool è inattiva oltre il limite specificato, significa che la connessione viene chiusa.
connect.timeout.millis

3000

Timeout connessione di destinazione. Apigee restituisce un codice di stato HTTP 503 in caso di timeout della connessione. In alcuni casi, è possibile che venga restituito un codice di stato HTTP 504 quando LoadBalancer viene utilizzato nella definizione di TargetServer e si verifica un timeout.

ignore.allow.header.for.405

true

Ti consente di ritrasmettere il codice di stato 405 al client. Se abiliti il flag, Apigee restituirà il codice di stato 405 anziché 502.

io.timeout.millis 55000

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

  • Se si verifica un timeout durante la lettura della richiesta HTTP dal traffico in entrata, 408 Request Timeout viene ottimizzato nuovamente. 408 Request Timeout non verrà restituito se si verifica un timeout durante la scrittura di una richiesta alla destinazione.
  • Se si verifica un timeout durante la scrittura della richiesta HTTP o la lettura della risposta HTTP, viene restituito 504 Gateway Timeout.

Vedi Impostare io.timeout.millis e api.timeout.

supports.http11 true Se questo è true e il client invia una richiesta 1.1, al target viene inviata anche una richiesta 1.1, altrimenti la richiesta 1.0 viene inviata alla destinazione.
use.proxy true

Questa proprietà si applica solo ad Apigee hybrid.

Se il file di override di ibrido di Apigee contiene la configurazione HTTP_PROXY, come descritto in Configurare il proxy di forwarding per i proxy API, utilizza questa proprietà per gestire/controllare i proxy che non devono utilizzare la configurazione del proxy.

Se impostato su false, il proxy API ignorerà le configurazioni del proxy HTTP specificate nel file di override di Apigee hybrid per le connessioni di destinazione impostate nel proxy.

use.proxy.tunneling true

Questa proprietà si applica solo ad Apigee hybrid.

Se questo criterio è impostato su true e le configurazioni del proxy vengono specificate nel file di override di Apigee ibridi, come descritto in Configurare il proxy di forwarding per i proxy API, le connessioni di destinazione vengono impostate per utilizzare il tunnel specificato. Se la destinazione utilizza TLS/SSL, questa proprietà viene ignorata e il messaggio viene sempre inviato utilizzando un tunnel.

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 payload funzionano come previsto. Nei casi in cui i payload siano superiori alla dimensione del buffer (10 MB in Apigee), puoi impostare questo attributo su true. Quando true, i payload delle richieste HTTP non vengono letti nel buffer, ma vengono trasmessi così come sono all'endpoint di destinazione. In questo caso, tutti i criteri che operano sul payload nel flusso di richiesta TargetEndpoint vengono bypassati. Vedi anche Richieste e risposte di flussi di dati.

response.streaming.enabled false

Per impostazione predefinita (false), i payload di risposta HTTP vengono letti in un buffer e i criteri che possono operare sul payload funzionano come previsto. Nei casi in cui i payload siano superiori alla dimensione del buffer (10 MB in Apigee), puoi impostare questo attributo su true. Se il valore è true, i payload di risposta HTTP non vengono letti nel buffer, ma vengono trasmessi così come sono nel flusso di risposta ProxyEndpoint. In questo caso, tutti i criteri che operano sul payload nel flusso di risposta TargetEndpoint vengono bypassati. Vedi anche Richieste e risposte di flussi di dati.

success.codes N/D

Per impostazione predefinita, Apigee 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 esempio, 2XX, 1XX, 505 considera tutti i codici di risposta HTTP 100, 200 e 505 come operazioni riuscite.

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

<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:

<Property name="success.codes">400</Property>

Se imposti il codice HTTP 400 come unico codice riuscito, i codici 1xx, 2xx e 3xx vengono trattati come errori.

compression.algorithm N/D Per impostazione predefinita, Apigee rispetta il tipo di compressione impostato (gzip, deflate o nessuno) per i messaggi ricevuti. Se la richiesta viene ricevuta dal client utilizzando, ad esempio, la compressione gzip, Apigee la inoltra al target utilizzando la compressione gzip. Se la risposta ricevuta dal target utilizza deflate, Apigee inoltra la risposta al client utilizzando deflate. I valori supportati sono:
  • gzip: invia sempre i messaggi utilizzando la compressione gzip
  • deflate: invia sempre i messaggi utilizzando la compressione deflate
  • none: invia sempre i messaggi senza compressione

Vedi anche: Apigee supporta la compressione/de-compressione con GZIP/de-compressione?

request.retain.headers.
enabled
true Per impostazione predefinita, Apigee conserva sempre tutte le intestazioni HTTP nei messaggi in uscita. Se il criterio viene impostato su true, tutte le intestazioni HTTP presenti nella richiesta in entrata vengono impostate sulla richiesta in uscita.
request.retain.headers N/D Definisce intestazioni HTTP specifiche della richiesta che deve essere impostata nella richiesta in uscita al servizio di destinazione. Ad esempio, per passthrough l'intestazione User-Agent, imposta il valore di request.retain.headers su User-Agent. Più intestazioni HTTP vengono specificate sotto forma di 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, tutte le intestazioni specificate nella proprietà request.retain.headers vengono comunque impostate nel messaggio in uscita.
response.retain.headers.
enabled
true Per impostazione predefinita, Apigee conserva sempre tutte le intestazioni HTTP nei messaggi in uscita. Se impostato su true, tutte le intestazioni HTTP presenti nella risposta in entrata dal servizio di destinazione vengono impostate nella risposta in uscita prima di essere passata a ProxyEndpoint.
response.retain.headers N/D Definisce intestazioni HTTP specifiche della risposta che devono essere impostate nella risposta in uscita prima di essere passata a ProxyEndpoint. Ad esempio, per passare all'intestazione Expires, imposta il valore di response.retain.headers su Expires. Più intestazioni HTTP vengono specificate sotto forma di elenco separato da virgole, ad esempio Expires,Set-Cookie. Questa proprietà sostituisce response.retain.headers.enabled. Se response.retain.headers.enabled è impostato su false, tutte le intestazioni specificate nella proprietà response.retain.headers vengono comunque impostate nel messaggio in uscita.
retain.queryparams.
enabled
true Per impostazione predefinita, Apigee conserva sempre tutti parametri di ricerca nelle richieste in uscita. Se viene impostato su true, tutti parametri di ricerca presenti nella richiesta in entrata vengono impostati sulla richiesta in uscita verso il servizio di destinazione.
retain.queryparams N/D Definisce parametri di ricerca specifici da impostare sulla richiesta in uscita. Ad esempio, per includere il parametro di query apikey nel messaggio di richiesta, imposta retain.queryparams su apikey. Più parametri di ricerca vengono specificati sotto forma di elenco separato da virgole, ad esempio apikey,environment. Questa proprietà sostituisce retain.queryparams.enabled.

Proprietà di trasporto ProxyEndpoint

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

Le proprietà sono impostate su ProxyEndpoint elementi HTTPProxyConnection, come mostrato in questa configurazione di esempio:

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

Intestazioni delle richieste

Una richiesta HTTP in entrata include le intestazioni HTTP inviate dal client. Le intestazioni con nomi che corrispondono al pattern X-Apigee-* vengono rimosse dalle richieste in entrata se un client le invia. Questo pattern del nome è riservato ad Apigee.

Specifica della proprietà di trasporto ProxyEndpoint

Nome proprietà Valore predefinito Descrizione
X-Forwarded-For false Se impostato su true, l'indirizzo IP dell'host virtuale viene aggiunto alla richiesta in uscita come valore dell'intestazione HTTP X-Forwarded-For.
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 payload funzionano come previsto. Nei casi in cui i payload siano superiori alla dimensione del buffer (10 MB in Apigee), puoi impostare questo attributo su true. Quando true, i payload delle richieste HTTP non vengono letti nel buffer, ma vengono trasmessi così come sono nel flusso di richiesta TargetEndpoint. In questo caso, tutti i criteri che operano sul payload nel flusso di richiesta ProxyEndpoint vengono bypassati. Vedi anche Richieste e risposte di flussi di dati.
response.streaming.
enabled
false Per impostazione predefinita (false), i payload di risposta HTTP vengono letti in un buffer e i criteri che possono operare sul payload funzionano come previsto. Nei casi in cui i payload siano superiori alla dimensione del buffer (10 MB in Apigee), puoi impostare questo attributo su true. Quando true, i payload di risposta HTTP non vengono letti nel buffer, ma vengono trasmessi così come sono al client. In questo caso, tutti i criteri che operano sul payload nel flusso di risposta ProxyEndpoint vengono bypassati. Vedi anche Richieste e risposte di flussi di dati.
compression.algorithm N/D

Per impostazione predefinita, Apigee rispetta il tipo di compressione impostato (gzip, deflate o nessuno) per i messaggi ricevuti. Ad esempio, se un client invia una richiesta che utilizza la compressione gzip, Apigee inoltra la richiesta al target utilizzando la compressione gzip. Puoi configurare gli algoritmi di compressione da applicare in modo esplicito impostando questa proprietà su TargetEndpoint o ProxyEndpoint. I valori supportati sono:

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

Vedi anche: Apigee supporta la compressione/de-compressione con GZIP/de-compressione?

api.timeout N/D

Configura il timeout per singoli proxy API (in millisecondi)

Puoi configurare i proxy API, anche quelli per cui è abilitato il flusso, in modo che scadano dopo un periodo di tempo specificato con lo stato 504 Gateway Timeout.

Ad esempio, per configurare il timeout di un proxy dopo 180.000 millisecondi (tre minuti), aggiungi la seguente proprietà a HTTPProxyConnection:

<Property name="api.timeout">180000</Property>

Non puoi impostare questa proprietà con una variabile.

Vedi Impostare io.timeout.millis e api.timeout.

HTTPHeader.allowDuplicates N/D

Utilizza questa impostazione per consentire intestazioni duplicate (per intestazioni specifiche).

<HTTPProxyConnection>
  <Properties>
     <Property name="HTTPHeader.allowDuplicates">Content-Type,Authorization</Property>
  </Properties>
</HTTPProxyConnection>
HTTPHeader.multiValued N/D

Utilizza questa impostazione per consentire intestazioni duplicate (per intestazioni specifiche).

<HTTPProxyConnection>
  <Properties>
    <Property name="HTTPHeader.multiValued">Content-Type,Authorization</Property>
  </Properties>
</HTTPProxyConnection>

Impostazione di io.timeout.millis e api.timeout

L'operazione di io.timeout.millis e api.timeout è correlata. A ogni richiesta a un proxy API:

  1. Ingress (noto anche come bilanciatore del carico interno) invia il valore di timeout al processore di messaggi. Il valore predefinito di questo timeout è 300 secondi e non è configurabile.
  2. Il processore di messaggi imposta quindi api.timeout:
    1. Se api.timeout non è impostato a livello di proxy, utilizza il timeout impostato da Ingress.
    2. Se api.timeout è impostato a livello di proxy, impostalo sul processore di messaggi sul valore inferiore al timeout Ingress o al valore api.timeout.
  3. Il valore api.timeout specifica il tempo massimo di esecuzione di un proxy API dalla richiesta API alla risposta.

    Dopo che ogni criterio nel proxy API viene eseguito, o prima che il processore di messaggi invii la richiesta all'endpoint di destinazione, calcola (api.timeout: tempo trascorso dall'inizio della richiesta).

    Se il valore è inferiore a zero, il tempo massimo per gestire la richiesta è scaduto e il processore di messaggi restituisce un valore 504 Gateway Timeout.

  4. Il valore di io.timeout.millis specifica il tempo massimo a disposizione dell'endpoint di destinazione per 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 questo valore.

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