Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Este tópico descreve as propriedades de transporte que podem ser definidas nas configurações TargetEndpoint
e ProxyEndpoint
para controlar o comportamento das mensagens e das ligações. Para uma cobertura completa das opções de configuração TargetEndpoint
e ProxyEndpoint
, consulte a referência de configuração do proxy da API.
Propriedades de transporte do TargetEndpoint
O elemento HTTPTargetConnection
nas configurações TargetEndpoint
define um conjunto de propriedades de transporte HTTP. Pode usar estas propriedades para definir configurações ao nível do transporte.
As propriedades são definidas nos elementos TargetEndpoint
HTTPTargetConnection
, como mostrado nesta configuração de exemplo:
<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>
Especificação da propriedade de transporte TargetEndpoint
Nome da propriedade | Valor predefinido | Descrição |
---|---|---|
allow.post.without.content.length |
falso | Permite enviar pedidos POST sem conteúdo no corpo. |
allow.put.without.content.length |
falso | Permite enviar pedidos PUT sem conteúdo no corpo. |
allow.tls.session.resumption |
verdadeiro | Se os clientes true (predefinição) reutilizarem sessões TLS quando fizerem novas ligações ao destino.
Defina como false se não quiser a reutilização da sessão TLS. Geralmente, a reutilização de sessões significa tempos de ligação mais curtos, mas alguns destinos podem não suportar a reutilização de sessões ou ter dificuldades com a mesma. |
keepalive.timeout.millis |
60000 | Limite de tempo de inatividade da ligação para a ligação de destino no conjunto de ligações. Se a ligação no conjunto estiver inativa para além do limite especificado, a ligação é fechada. |
connect.timeout.millis |
3000 |
Limite de tempo da ligação de destino. O Apigee devolve um código de estado HTTP |
ignore.allow.header.for.405 |
verdadeiro |
Permite-lhe transmitir o código de estado 405 de volta ao cliente. Se ativar a flag, o Apigee devolve 405 em vez do código de estado 502. |
io.timeout.millis |
55000 |
Se não existirem dados para ler durante o número especificado de milissegundos ou se o soquete não estiver pronto para escrever dados durante um número especificado de milissegundos, a transação é tratada como um limite de tempo.
Consulte o artigo Definir io.timeout.millis e api.timeout. |
supports.http11 |
verdadeiro | Se for true e o cliente enviar um pedido 1.1 , o destino também recebe um pedido 1.1 . Caso contrário, é enviado um pedido 1.0 para o destino. |
use.proxy |
verdadeiro |
Se o ficheiro de substituições do Apigee hybrid contiver a configuração
Se estiver definido como |
use.proxy.tunneling |
verdadeiro |
Se esta opção estiver definida como verdadeira e as configurações de proxy forem especificadas no ficheiro de substituição do Apigee hybrid conforme descrito em Configurar o encaminhamento de proxy para proxies de API, as ligações de destino são definidas para usar o túnel especificado. Se o destino usar TLS/SSL, esta propriedade é ignorada e a mensagem é sempre enviada através de um túnel. |
response.payload. |
10M |
Por predefinição (10M ). Use a propriedade response.payload.parse.limit para definir o tamanho máximo da carga útil que pode ser processada no fluxo de resposta, em megabytes (M). O limite configurável mínimo é de 10 milhões e o limite configurável máximo é de 30 milhões. Se a propriedade não estiver definida, o limite predefinido é de 10 milhões.
Consulte também Tamanho do payload da mensagem. |
request.streaming.enabled |
falso |
Por predefinição ( |
response.streaming.enabled |
falso |
Por predefinição (falso), as cargas de resposta de HTTP são lidas num buffer e as políticas que podem operar na carga funcionam como esperado. Nos casos em que os payloads são maiores do que o tamanho do buffer (10 MB no Apigee), pode definir este atributo como verdadeiro. Quando é verdadeiro, as cargas de resposta de HTTP não são lidas num buffer; são
transmitidas tal como estão para o fluxo de resposta |
success.codes |
N/A |
Por predefinição, o Apigee trata o código HTTP A definição desta propriedade substitui os valores predefinidos. Por conseguinte, se quiser adicionar o código HTTP
Se quiser que apenas o código HTTP
Ao definir o código HTTP |
compression.algorithm |
N/A |
Por predefinição, o Apigee respeita o tipo de compressão definido (gzip, deflate ou nenhum) para as mensagens recebidas. Se o pedido for recebido do cliente através, por exemplo, da compressão gzip, o Apigee encaminha o pedido para o destino através da compressão gzip. Se
a resposta recebida do destino usar deflate, o Apigee encaminha a resposta para
o cliente usando deflate. Os valores suportados são:
Veja também: O Apigee suporta a compressão/descompressão com compressão GZIP/deflate? |
request.retain.headers. |
verdadeiro | Por predefinição, o Apigee retém sempre todos os cabeçalhos HTTP nas mensagens de saída. Quando definida como true , todos os cabeçalhos HTTP presentes no pedido recebido são definidos no pedido enviado. |
request.retain.headers |
N/A | Define cabeçalhos HTTP específicos do pedido que devem ser definidos no pedido de saída
para o serviço de destino. Por exemplo, para transmitir o cabeçalho User-Agent , defina o valor de request.retain.headers como User-Agent .
Vários cabeçalhos HTTP são especificados como uma lista separada por vírgulas, por exemplo:
User-Agent,Referer,Accept-Language . Esta propriedade substitui
request.retain.headers.enabled . Se request.retain.headers.enabled
estiver definido como false , todos os cabeçalhos especificados na propriedade
request.retain.headers continuam a ser definidos na mensagem de saída. |
response.retain.headers. |
verdadeiro | Por predefinição, o Apigee retém sempre todos os cabeçalhos HTTP nas mensagens de saída. Quando definido
como true , todos os cabeçalhos HTTP presentes na resposta de entrada do serviço
de destino são definidos na resposta de saída antes de serem transmitidos ao
ProxyEndpoint . |
response.retain.headers |
N/A | Define cabeçalhos HTTP específicos da resposta que devem ser definidos na resposta de saída antes de ser transmitida ao ProxyEndpoint . Por exemplo, para
transmitir o cabeçalho
Expires , defina o valor de response.retain.headers como
Expires . São especificados vários cabeçalhos HTTP como uma lista separada por vírgulas, por exemplo, Expires,Set-Cookie . Esta propriedade substitui
response.retain.headers.enabled . Se
response.retain.headers.enabled estiver definido como false , todos os cabeçalhos
especificados na propriedade response.retain.headers continuam a ser definidos na
mensagem de saída. |
retain.queryparams. |
verdadeiro | Por predefinição, o Apigee retém sempre todos os parâmetros de consulta em pedidos de saída. Quando
definido como true , todos os parâmetros de consulta presentes no pedido recebido são definidos no
pedido enviado para o serviço de destino. |
retain.queryparams |
N/A | Define parâmetros de consulta específicos a definir no pedido de saída. Por exemplo, para
incluir o parâmetro de consulta apikey na mensagem de pedido, defina
retain.queryparams como apikey . Vários parâmetros de consulta são especificados como uma lista separada por vírgulas, por exemplo, apikey,environment . Esta propriedade
substitui retain.queryparams.enabled . |
Propriedades de transporte do ProxyEndpoint
Os elementos ProxyEndpoint
HTTPTargetConnection
definem um conjunto de propriedades de transporte HTTP. Estas propriedades podem ser usadas para definir configurações ao nível do transporte.
As propriedades são definidas nos elementos ProxyEndpoint
HTTPProxyConnection
, conforme mostrado nesta configuração de exemplo:
<ProxyEndpoint name="default"> <HTTPProxyConnection> <BasePath>/v1/weather</BasePath> <Properties> <Property name="request.streaming.enabled">true</Property> </Properties> </HTTPProxyConnection> </ProxyEndpoint>
Cabeçalhos do pedido
Um pedido HTTP de entrada inclui os cabeçalhos HTTP enviados pelo cliente.
Os cabeçalhos com nomes que correspondem ao padrão X-Apigee-*
são removidos dos pedidos
recebidos se um cliente os enviar. Este padrão de nome está reservado para o Apigee.
Especificação da propriedade de transporte ProxyEndpoint
Nome da propriedade | Valor predefinido | Descrição |
---|---|---|
X-Forwarded-For |
falso | Quando está definida como verdadeira, o endereço IP do anfitrião virtual é adicionado ao pedido de saída como o valor do cabeçalho HTTP X-Forwarded-For . |
request.streaming. |
false |
Por predefinição (false ), as cargas úteis dos pedidos HTTP são lidas num buffer e as políticas que podem operar na carga útil funcionam conforme esperado. Nos casos em que os payloads são maiores do que o tamanho do buffer (10 MB no Apigee), pode definir este atributo como true . Quando true , as cargas de pedidos HTTP não são lidas
num buffer. São
transmitidas tal como estão para o fluxo de pedidos TargetEndpoint . Neste caso, todas as políticas
que operam
na carga útil no fluxo de pedidos ProxyEndpoint são ignoradas. Veja também
Pedidos e
respostas de streaming. |
request.payload. |
10M |
Por predefinição (10M ). Use a propriedade request.payload.parse.limit para definir o tamanho máximo do payload que pode ser processado no fluxo de pedidos, em megabytes (M). O limite configurável mínimo é de 10 milhões e o limite configurável máximo é de 30 milhões. Se a propriedade não estiver definida, o limite predefinido é de 10 milhões.
Consulte também Tamanho do payload da mensagem. |
response.streaming. |
false |
Por predefinição (falso), as cargas de resposta de HTTP são lidas num buffer e as políticas que podem operar na carga funcionam como esperado. Nos casos em que os payloads são maiores do que o tamanho do buffer (10 MB no Apigee), pode definir este atributo como true . Quando true , as cargas de resposta de HTTP não são lidas
num buffer; são
transmitidas tal como estão para o cliente. Neste caso, todas as políticas que operam na carga útil no fluxo de resposta ProxyEndpoint são ignoradas. Veja também
Pedidos e
respostas de streaming. |
compression.algorithm |
N/A |
Por predefinição, o Apigee respeita o tipo de compressão definido (gzip, deflate ou nenhum) para as mensagens recebidas. Por exemplo, quando um cliente envia um pedido que usa a compressão gzip, o Apigee encaminha o pedido para o destino usando a compressão gzip. Pode configurar algoritmos de compressão
para serem aplicados explicitamente definindo esta propriedade no
Veja também: O Apigee suporta a compressão/descompressão com compressão GZIP/deflate? |
api.timeout |
N/A |
Configure o limite de tempo para proxies de API individuais (em milissegundos) Pode configurar proxies de API, mesmo aqueles com o streaming ativado, para expirar após um período especificado com um estado
Por exemplo, para configurar um proxy para expirar após 180 000 milissegundos (três minutos),
adicione a seguinte propriedade a <Property name="api.timeout">180000</Property> Não pode definir esta propriedade com uma variável. Consulte o artigo Definir io.timeout.millis e api.timeout. |
HTTPHeader.allowDuplicates |
N/A | Use esta definição para permitir cabeçalhos duplicados (para cabeçalhos específicos). <HTTPProxyConnection> <Properties> <Property name="HTTPHeader.allowDuplicates">Content-Type,Authorization</Property> </Properties> </HTTPProxyConnection> |
HTTPHeader.multiValued |
N/A | Use esta definição para permitir cabeçalhos duplicados (para cabeçalhos específicos). <HTTPProxyConnection> <Properties> <Property name="HTTPHeader.multiValued">Content-Type,Authorization</Property> </Properties> </HTTPProxyConnection> |
Definir io.timeout.millis e api.timeout
O funcionamento de io.timeout.millis
e api.timeout
estão relacionados. Em cada pedido a um proxy de API:
- O Ingress (também conhecido como equilibrador de carga interno) envia o respetivo valor de tempo limite para o processador de mensagens. Este valor de tempo limite tem como predefinição 300 segundos e não é configurável.
- Em seguida, o processador de mensagens define
api.timeout
:- Se
api.timeout
não estiver definido ao nível do proxy, use o tempo limite definido pelo Ingress. - Se
api.timeout
estiver definido ao nível do proxy, defina-o no processador de mensagens para o menor do limite de tempo de entrada ou o valor deapi.timeout
.
- Se
-
O valor de
api.timeout
especifica o tempo máximo que um proxy de API tem para executar desde o pedido API até à resposta.Após a execução de cada política no proxy da API, ou antes de o processador de mensagens enviar o pedido para o ponto final de destino, o processador de mensagens calcula (
api.timeout
- tempo decorrido desde o início do pedido).Se o valor for inferior a zero, significa que o tempo máximo para processar o pedido expirou e o processador de mensagens devolve um
504 Gateway Timeout
. -
O valor de
io.timeout.millis
especifica o tempo máximo que o ponto final de destino tem para responder.Antes de estabelecer ligação a um ponto final de destino, o processador de mensagens determina o menor valor entre (
api.timeout
– tempo decorrido desde o início do pedido) eio.timeout.millis
. Em seguida, defineio.timeout.millis
para esse valor.Se ocorrer um limite de tempo ao escrever o pedido HTTP ou ler a resposta HTTP, é devolvido
504 Gateway Timeout
.