Variáveis de solicitação e resposta

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Ao fazer uma solicitação a um proxy de API, você pode passar qualquer uma ou todas as informações a seguir, dependendo da configuração do proxy da API:

  • Cabeçalhos de solicitação
  • Parâmetros de consulta
  • Dados do formulário
  • Payloads XML ou JSON
  • URIs de recurso

Por padrão, todos os dados em uma solicitação inalterada são transmitidos do ProxyEndpoint para o TargetEndpoint. Portanto, quando o TargetEndpoint faz a solicitação ao servidor de back-end, todas as informações na solicitação original são passadas para o serviço de back-end.

O mesmo acontece com a resposta recebida pelo serviço de back-end pela Apigee. Por padrão, todos os dados recebidos na resposta são passados inalterados para o aplicativo que originou a solicitação.

Como os dados da solicitação são transmitidos para o servidor de back-end?

A imagem a seguir mostra uma definição de proxy da API:

Solicitação do cliente HTTP passando pelo endpoint de proxy para o endpoint de destino no back-end
  para alcançar o serviço HTTP. Exemplos de endpoint do proxy e de destino
  são fornecidos.

Para este proxy de API:

  • Host virtual de proxy da API: default
  • Domínio definido pelos nomes de host no grupo de ambiente: http://www.example.com
  • Caminho base de proxy: /v1/weather
  • TargetEndpoint especificado pela regra de rota: default
  • URL de destino: http://weather.yahooapis.com

Um app cliente faz uma solicitação GET ao proxy da API usando o seguinte comando curl:

curl -X GET http://www.example.com/v1/weather/forecastrss?w=12797282

Essa solicitação contém o recurso forecastrss e um parâmetro de consulta, w. A Apigee analisa a solicitação conforme mostrado abaixo e atribui partes da solicitação às variáveis de fluxo:

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

As variáveis de fluxo são definidas com os seguintes valores:

  • request.verb: GET
  • proxy.basepath: /v1/weather
  • proxy.pathsuffix: forecastrss
  • request.querystring: w=12797282

O TargetEndpoint faz uma solicitação ao serviço de back-end usando informações da solicitação:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

Observe como os parâmetros de recurso e consulta especificados na solicitação são incluídos automaticamente na solicitação para o servidor de back-end. A partir da definição do TargetEndpoint, a solicitação tem o formulário:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

Assim como os parâmetros de consulta, todos os cabeçalhos ou parâmetros de formulário incluídos na solicitação ao proxy da API são transmitidos ao servidor de back-end. Por exemplo, você faz a solicitação abaixo que inclui um cabeçalho:

curl -X GET -H 'Content-type:application/xml' http://www.example.com/v1/weather/forecastrss?w=12797282

Ou solicite uma solicitação no formulário abaixo para incluir um cabeçalho e dados de formulários:

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://www.example.com/v1/register/user

Nos dois exemplos, os cabeçalhos e os dados do formulário são transmitidos inalterados ao serviço de back-end. Os cabeçalhos são representados por variáveis de fluxo, como request.headers.count e request.headers.names. Os dados de formulário são representados por variáveis de fluxo, como request.formparam.count e request.formparam.names.

Como os dados de resposta são retornados?

Por padrão, todos os dados recebidos da Apigee a partir do serviço de back-end na resposta são passados inalterados para o aplicativo que originou a solicitação. Conforme descrito acima para a solicitação, os dados retornados na resposta podem ser acessados por meio de variáveis de fluxo na Apigee. Para mais informações, consulte a referência das variáveis de fluxo.

Acessar dados de solicitação e resposta em um proxy de API

Há muitas vezes em que você quer modificar os dados da solicitação antes de enviá-los ao servidor de back-end. Exemplo:

  • Para remover informações de segurança usadas pela Apigee para validar solicitações. Essas informações não são exigidas pelo serviço de back-end.
  • Para adicionar dados enviados ao serviço de back-end, por exemplo, para rastrear usuários ou coletar análises.
  • Para processar a solicitação condicionalmente com base nos dados da solicitação. Por exemplo, um proxy de API pode ter vários TargetEndpoints. O TargetEndpoint usado pela solicitação é determinado pelos dados da solicitação. Em seguida, você remove esses dados da solicitação antes de enviá-los ao serviço de back-end.

O mesmo vale para os dados na resposta. Como parte do processamento da resposta, o proxy da API pode querer modificar os dados antes de retorná-los ao aplicativo solicitante.

Acessar mensagens de solicitação

Você pode usar políticas para acessar e alterar partes de uma mensagem de solicitação. Essas partes incluem:

  • Cabeçalhos
  • Parâmetros de consulta
  • Parâmetros do formulário
  • Endereço IP de origem
  • Corpo da mensagem HTTP

Em um fluxo normal, depois que a solicitação é processada, o proxy envia a solicitação transformada para o destino.

As políticas podem examinar as variáveis de solicitação e, em seguida, transformar ou rejeitar a solicitação com base no conteúdo dessas variáveis. As políticas transformam a solicitação definindo as variáveis apropriadas, por exemplo, variáveis correspondentes aos cabeçalhos da solicitação.

Acessar mensagens de resposta

Usando as variáveis que se aplicam à mensagem de resposta, as políticas podem acessar componentes de mensagens, incluindo o cabeçalho, os parâmetros de consulta e os parâmetros de formulário, o endereço IP de origem, o corpo da mensagem HTTP e assim por diante.

O proxy recebe uma mensagem de resposta e, em seguida, aplica-se a uma série de políticas, com base nas condições avaliadas na resposta, que podem modificar ou transformar a resposta.

As políticas podem examinar variáveis de resposta e, em seguida, transformar ou rejeitar a solicitação com base no conteúdo dessas variáveis. As políticas transformam a resposta definindo as variáveis apropriadas, por exemplo, variáveis correspondentes aos cabeçalhos de resposta.

Políticas comuns para acessar variáveis de fluxo

A Apigee define várias políticas que podem ser usadas para processar os dados de solicitação e resposta. As políticas incluem o seguinte: