Riferimento per le proprietà degli endpoint

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Questo argomento descrive le proprietà di trasporto che è possibile impostare in TargetEndpoint e ProxyEndpoint configurazioni per controllare i messaggi e il comportamento della connessione. Per una copertura completa TargetEndpoint e ProxyEndpoint, consulta le informazioni di riferimento sulla configurazione del proxy API.

Proprietà di trasporto TargetEndpoint

Elemento HTTPTargetConnection nelle configurazioni TargetEndpoint definisce un insieme di valori HTTP proprietà di trasporto. 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>

Proprietà di trasporto TargetEndpoint Specifiche

Nome proprietà Valore predefinito Descrizione
allow.post.without.content.length falso Ti consente di inviare richieste POST senza contenuti nel corpo.
allow.put.without.content.length falso Consente di inviare richieste PUT senza contenuti nel corpo.
allow.tls.session.resumption true Se i client true (predefinito) riutilizzano le sessioni TLS quando si effettuano nuove connessioni alla destinazione. Imposta su false se non vuoi riutilizzare la sessione TLS. Riutilizzo della sessione in generale significa tempi di connessione più brevi, ma alcune destinazioni potrebbero non supportare il riutilizzo delle sessioni o avere problemi.
keepalive.timeout.millis 60.000 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. Apigee restituisce un codice di stato HTTP 503 se si verifica un timeout della connessione. In alcuni casi, è possibile che un codice di stato HTTP 504 restituito quando LoadBalancer viene utilizzato nella definizione di TargetServer e un timeout .

ignore.allow.header.for.405

true

Consente di ritrasmettere il codice di stato 405 al client. Attivando il flag Apigee restituirà il codice di stato 405 anziché 502.

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 un determinato numero di millisecondi, la transazione viene considerato come un timeout.

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

Vedi Impostazione di io.timeout.millis e api.timeout.

supports.http11 true Se si tratta di true e il client invia una richiesta 1.1, al target viene inviato anche un 1.1 richiesta, altrimenti la richiesta 1.0 viene inviata alla destinazione.
use.proxy true

Questa proprietà si applica solo ad Apigee hybrid.

Se il file degli override ibridi di Apigee contiene la configurazione HTTP_PROXY, come descritto in Configurare il proxy di inoltro per i proxy API, quindi usa questa proprietà per gestire/controllare quali proxy non utilizzare la configurazione proxy.

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

use.proxy.tunneling true

Questa proprietà si applica solo ad Apigee hybrid.

Se questo valore è impostato su true e vengono specificate le configurazioni del proxy File di override di Apigee hybrid come descritto in Configurare il forwarding del proxy per i proxy API, e le connessioni di destinazione siano impostate per usare il tunnel specificato. Se il target utilizza TLS/SSL, questa proprietà viene ignorata e il messaggio viene sempre inviato utilizzando un tunnel.

request.streaming.enabled falso

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

response.streaming.enabled falso

Per impostazione predefinita (false), i payload delle risposte 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 in Apigee), puoi impostare su true. Se 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 bypassate. Vedi anche Richieste di streaming risposte personalizzate.

success.codes N/D

Per impostazione predefinita, Apigee considera il codice HTTP 4XX o 5XX come errori e tratta il codice HTTP, 1XX, 2XX, 3XX come operazione riuscita. Questa proprietà attiva una definizione esplicita di codici di successo, ad esempio, 2XX, 1XX, 505 tratta qualsiasi 100, 200 e 505 codici di risposta HTTP 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:

<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 di operazione riuscita, 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 ricevuto. Se la richiesta viene ricevuta dal client utilizzando, ad esempio, gzip compressione, Apigee inoltra la richiesta alla destinazione utilizzando la compressione gzip. Se la risposta ricevuta dalla destinazione utilizza deflate, quindi Apigee inoltra la risposta a 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 la compressione GZIP/deflate?

request.retain.headers.
enabled
true Per impostazione predefinita, Apigee 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 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 ProxyEndpoint.
response.retain.headers N/D Definisce le intestazioni HTTP specifiche della risposta che devono essere impostate sulla risposta prima che venga passata all'ProxyEndpoint. Ad esempio, per 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 conserva sempre tutti parametri di ricerca nelle 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 parametri di ricerca 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 ricerca specificato come elenco separato da virgole, ad esempio apikey,environment. Questo sostituisce retain.queryparams.enabled.

Proprietà di trasporto ProxyEndpoint

Gli elementi ProxyEndpoint HTTPTargetConnection definiscono un insieme di HTTP proprietà di trasporto. Questi possono essere usate per impostare 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 corrispondenti al pattern X-Apigee-* verranno rimosse dalla cartella In entrata se vengono inviate da un client. Questo pattern del nome è riservato ad Apigee.

Proprietà di trasporto ProxyEndpoint Specifiche

Nome proprietà Valore predefinito Descrizione
X-Forwarded-For falso Se il criterio è 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 criteri che possono di eseguire operazioni sul carico utile come previsto. Nei casi in cui i payload siano maggiori rispetto del buffer (10 MB in Apigee), puoi impostarla a true. Quando true, i payload delle richieste HTTP non vengono letti in un buffer; sono trasmessi così com'è al flusso di richiesta TargetEndpoint. In questo caso, qualsiasi criterio che operano sul payload nel flusso di richiesta ProxyEndpoint. Vedi anche Richieste di streaming risposte personalizzate.
response.streaming.
enabled
false Per impostazione predefinita (false), i payload delle risposte 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 in Apigee), puoi impostare a true. Quando true, i payload della risposta HTTP non vengono letti in un buffer; sono trasmessi così com'è al client. In questo caso, tutti i criteri che operano sul payload Il flusso di risposta ProxyEndpoint è stato ignorato. Vedi anche Richieste di streaming risposte personalizzate.
compression.algorithm N/D

Per impostazione predefinita, Apigee rispetta il tipo di compressione impostato (gzip, deflate o nessuno) per i messaggi ricevuti. Per Ad esempio, quando un client invia una richiesta che usa la compressione gzip, Apigee inoltra la richiesta alla destinazione utilizzando la compressione gzip. Puoi configurare la compressione agli algoritmi da applicare esplicitamente impostando questa proprietà nella TargetEndpoint o 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 la compressione GZIP/deflate?

api.timeout N/D

Configura il timeout per singoli proxy API (in millisecondi)

Puoi configurare proxy API, anche quelli con streaming abilitato, la scadenza del periodo di tempo specificato con stato 504 Gateway Timeout.

Ad esempio, per configurare un proxy in modo che scada 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 Impostazione di 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

Operazione di io.timeout.millis e api.timeout sono correlate. Per ogni richiesta a un proxy API:

  1. Ingress (noto anche come bilanciatore del carico interno) invia il proprio valore di timeout al processore di messaggi. Questo valore di timeout è di 300 secondi per impostazione predefinita e non è configurabile.
  2. Il processore di messaggi imposta quindi api.timeout:
    1. Se api.timeout non è impostato a livello di proxy, utilizza il metodo timeout impostato dall'oggetto Ingress.
    2. Se api.timeout è impostato a livello di proxy, impostalo sul processore di messaggi alla inferiore al timeout di Ingress o al valore di 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, il processore di messaggi calcola (api.timeout - tempo trascorso dall'inizio del richiesta).

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

  4. Il valore io.timeout.millis specifica la quantità di tempo massima in 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 o la lettura del Risposta HTTP, viene restituito 504 Gateway Timeout.