Política HTTPModifier

O quê

A política HTTPModifier pode alterar uma mensagem de pedido ou resposta existente.

A política permite-lhe realizar as seguintes ações nessas mensagens:

  • Adicione novos parâmetros de formulário, cabeçalhos ou parâmetros de consulta a uma mensagem
  • Remova cabeçalhos, parâmetros de consulta e parâmetros de formulário de uma mensagem
  • Defina o valor das propriedades existentes numa mensagem

Com o HTTPModifier, pode adicionar, alterar ou remover propriedades do pedido ou da resposta. Em alternativa, pode usar o HTTPModifier para criar uma mensagem de pedido ou resposta personalizada e transmiti-la a um destino alternativo, conforme descrito no artigo Crie mensagens de pedido personalizadas.

A política HTTPModifier pode criar variáveis de fluxo com os seguintes elementos secundários:

A ordem pela qual organiza os elementos <Add>, <Set> e <Remove> é importante. A política executa essas ações pela ordem em que aparecem na configuração da política. Se precisar de remover todos os cabeçalhos e, em seguida, definir um cabeçalho específico, deve incluir o elemento <Remove> antes do elemento <Set>.

Esta política é uma política padrão e pode ser implementada em qualquer tipo de ambiente. Para obter informações sobre os tipos de políticas e a disponibilidade com cada tipo de ambiente, consulte Tipos de políticas.

<HTTPModifier> elemento

Define uma política HTTPModifier.

Valor predefinido Consulte o separador Política predefinida abaixo
Obrigatório? Obrigatória
Tipo Objeto complexo
Elemento principal N/A
Elementos subordinados <Add>
<AssignTo>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

O elemento <HTTPModifier> usa a seguinte sintaxe:

Sintaxe

O elemento <HTTPModifier> usa a seguinte sintaxe:

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- All HTTPModifier child elements are optional -->
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>

  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>

  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>

  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>

  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <Path>PATH</Path>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>

</HTTPModifier>

Política predefinida

O exemplo seguinte mostra as predefinições quando adiciona uma política HTTPModifier ao seu fluxo na IU do Apigee:

<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default">
  <DisplayName>HTTP Modifier-1</DisplayName>
  <Properties/>
  <Remove>
    <Headers>
      <Header name="h1"/>
    </Headers>
    <QueryParams>
      <QueryParam name="q1"/>
    </QueryParams>
    <FormParams>
      <FormParam name="f1"/>
    </FormParams>
  </Remove>
  <Add>
    <Headers/>
    <QueryParams/>
    <FormParams/>
  </Add>
  <Set>
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <!-- <Verb>GET</Verb> -->
    <Path/>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</HTTPModifier>

Quando insere uma nova política HTTPModifier na IU do Apigee, o modelo contém marcadores de posição para todas as operações possíveis. Normalmente, seleciona as operações que quer realizar com esta política e remove os restantes elementos secundários. Por exemplo, se quiser executar uma operação de adição, use o elemento <Add> e remova <Remove> e outros elementos secundários da política para a tornar mais legível.

Este elemento tem os seguintes atributos comuns a todas as políticas:

Atributo Predefinição Obrigatório? Descrição
name N/A Obrigatório

O nome interno da política. O valor do atributo name pode conter letras, números, espaços, hífenes, sublinhados e pontos finais. Este valor não pode exceder 255 carateres.

Opcionalmente, use o elemento <DisplayName> para etiquetar a política no editor de proxy da IU de gestão com um nome diferente em linguagem natural.

continueOnError falso Opcional Definido como false para devolver um erro quando uma política falha. Este comportamento é o esperado para a maioria das políticas. Definido como true para que a execução do fluxo continue mesmo depois de uma política falhar. Veja também:
enabled verdadeiro Opcional Defina como true para aplicar a política. Defina como false para desativar a política. A política não é aplicada, mesmo que permaneça anexada a um fluxo.
async   falso Descontinuado Este atributo foi descontinuado.

A tabela seguinte fornece uma descrição geral dos elementos subordinados de <HTTPModifier>:

Elemento secundário Obrigatório? Descrição
Operações comuns
<Add> Opcional Adiciona informações ao objeto de mensagem especificado pelo elemento <AssignTo>.

<Add> adiciona cabeçalhos ou parâmetros à mensagem que não existem na mensagem original. Tenha em atenção que o <Set> também oferece esta funcionalidade.

Para substituir cabeçalhos ou parâmetros existentes, use o elemento <Set>.

<Remove> Opcional Elimina os elementos especificados da variável de mensagem especificada no elemento <AssignTo>.
<Set> Opcional Substitui os valores das propriedades existentes no pedido ou na resposta, que é especificado pelo elemento <AssignTo>.

<Set> substitui os cabeçalhos ou os parâmetros que já existem na mensagem original ou adiciona novos se não existirem.

Outros elementos secundários
<AssignTo> Opcional Especifica em que mensagem a política HTTPModifier opera. Pode ser o pedido ou a resposta padrão, ou pode ser uma nova mensagem personalizada.
<IgnoreUnresolvedVariables> Opcional Determina se o processamento é interrompido quando é encontrada uma variável não resolvida.

Cada um destes elementos secundários é descrito nas secções que se seguem.

Exemplos

Os exemplos seguintes mostram algumas das formas como pode usar a política HTTPModifier:

1: Adicione um cabeçalho

O exemplo seguinte adiciona um cabeçalho ao pedido com o elemento <Add>. A variável VerifyAPIKey neste exemplo é gerada pela política VerifyAPIKey:

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

2: Modificar resposta

O exemplo seguinte modifica um objeto de resposta existente adicionando-lhe um cabeçalho:

<HTTPModifier name="HM-modify-response">
  <Set>
    <Headers>
      <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Este exemplo não cria uma nova mensagem. Em vez disso, modifica uma mensagem de resposta existente adicionando um cabeçalho HTTP.

Uma vez que este exemplo especifica response como o nome da variável no elemento <AssignTo>, esta política modifica o objeto de resposta que foi originalmente definido com os dados devolvidos pelo servidor de destino.

O cabeçalho HTTP adicionado à mensagem de resposta por esta política é derivado de uma variável preenchida pela política LookupCache. Por conseguinte, a mensagem de resposta modificada por esta política HTTPModifier contém um cabeçalho HTTP que indica se os resultados foram obtidos a partir da cache ou não. A definição de cabeçalhos na resposta pode ser útil para depurar e resolver problemas.

3: Remova o parâmetro de consulta

O exemplo seguinte remove o parâmetro de consulta apikey do pedido:

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

É uma prática recomendada remover o parâmetro de consulta apikey da mensagem de pedido quando usa a política VerifyAPIKey para autenticação do utilizador. Isto é feito para impedir que as informações importantes confidenciais sejam transmitidas ao destino de back-end.

Referência de elemento secundário

Esta secção descreve os elementos subordinados de <HTTPModifier>.

<Add>

Adiciona informações ao pedido ou à resposta, que são especificadas pelo elemento <AssignTo>.

O elemento <Add> adiciona novas propriedades à mensagem que não existem na mensagem original. Tenha em atenção que o <Set> também oferece esta funcionalidade. Para alterar os valores das propriedades existentes, use o elemento <Set>.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Tipo complexo
Elemento principal <HTTPModifier>
Elementos subordinados <FormParams>
<Headers>
<QueryParams>

O elemento <Add> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

Exemplo 1

O exemplo seguinte usa o elemento <FormParams> para obter os valores de três parâmetros da string de consulta do pedido inicial e defini-los como parâmetros de formulário no pedido do ponto final de destino:

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O exemplo seguinte usa o elemento <Headers> para adicionar um cabeçalho partner-id ao pedido que vai ser enviado para o ponto final de destino:

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 3

O exemplo seguinte usa o elemento <QueryParams> para adicionar um único parâmetro de consulta com um valor estático ao pedido:

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Este exemplo usa <Add> no fluxo prévio do pedido. Se analisar os resultados numa ferramenta, como a ferramenta de depuração, o pedido para https://example-target.com/get torna-se https://example-target.com/get?myParam=42.

Os elementos secundários de <Add> suportam a substituição de strings dinâmicas, conhecida como modelos de mensagens.

<FormParams> (filho de <Add>)

Adiciona novos parâmetros de formulário à mensagem de pedido. Este elemento não tem efeito numa mensagem de resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de <FormParam> elementos
Elemento principal <Add>
Elementos subordinados <FormParam>

O elemento <FormParams> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
  </Add>
</HTTPModifier>

Exemplo 1

O exemplo seguinte adiciona um único parâmetro de formulário (answer) e um valor estático (42) ao pedido:

<HTTPModifier name="HM-add-formparams-1">
  <Add>
    <FormParams>
      <FormParam name="answer">42</FormParam>
    </FormParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O exemplo seguinte obtém o valor do parâmetro de consulta name e adiciona-o ao pedido como um parâmetro de formulário e, em seguida, remove o parâmetro de consulta:

<HTTPModifier name="HM-Swap-QueryParam-to-FormParams">
  <Add>
    <FormParam name="name">{request.queryparam.name}
  </Add>
  <Remove>
    <QueryParam name="name"/>
  </Remove>
</HTTPModifier>

Tenha em atenção que este exemplo não especifica um destino com <AssignTo>. Esta política adiciona o parâmetro apenas ao pedido.

Exemplo 3

O exemplo seguinte adiciona vários parâmetros de formulário ao pedido:

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Este exemplo obtém os parâmetros da string de consulta do pedido de origem e adiciona-os como parâmetros de formulário com nomes diferentes. Em seguida, remove os parâmetros de consulta originais. O Apigee envia o pedido modificado para o ponto final de destino.

Pode usar a ferramenta de depuração para analisar o fluxo. Vai ver que o corpo do pedido contém os dados do formulário codificados por URL, que foram originalmente transmitidos como parâmetros da string de consulta:

username=nick&zip_code=90210&default_language=en

Pode usar <FormParams> apenas quando os seguintes critérios forem cumpridos:

  • Verbos HTTP: GET, POST
  • Tipo de mensagem: pedido
  • Uma (ou ambas) das seguintes opções:
    • Dados do formulário: definido para algum valor ou "" (a string vazia). Por exemplo, com curl, adicione -d "" ao seu pedido.
    • Cabeçalho Content-Length: definido como 0 (se não existirem dados no pedido original; caso contrário, o comprimento atual, em bytes). Por exemplo, com curl adicione -H "Content-Length: 0" ao seu pedido.

Por exemplo:

curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded"
  https://ahamilton-eval-test.apigee.net/am-test

Quando adiciona <FormParams>, o Apigee define o cabeçalho Content-Type do pedido como application/x-www-form-urlencoded antes de enviar a mensagem para o serviço de destino.

<Headers> (filho de <Add>)

Adiciona novos cabeçalhos ao pedido ou à resposta especificada, que é especificada pelo elemento <AssignTo>.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de <Header> elementos
Elemento principal <Add>
Elementos subordinados <Header>

O elemento <Headers> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Add>
</HTTPModifier>

Exemplo 1

O exemplo seguinte adiciona um cabeçalho partner-id à mensagem de pedido e atribui o valor da variável de fluxo verifyapikey.VAK-1.developer.app.partner-id a esse cabeçalho.

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<QueryParams> (filho de <Add>)

Adiciona novos parâmetros de consulta ao pedido. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de <QueryParam> elementos
Elemento principal <Add>
Elementos subordinados <QueryParam>

O elemento <QueryParams> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

Exemplo 1

O exemplo seguinte adiciona o parâmetro de consulta myParam ao pedido e atribui-lhe o valor 42:

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Pode usar <QueryParams> apenas quando os seguintes critérios forem cumpridos:

  • Verbos HTTP: GET, POST
  • Tipo de mensagem: pedido

Além disso, só pode definir parâmetros de consulta quando o atributo type do elemento <AssignTo> for uma mensagem de pedido. A definição destas no objeto de resposta não tem qualquer efeito.

Se definir uma matriz vazia de parâmetros de consulta na sua política (<Add><QueryParams/></Add>), a política não adiciona quaisquer parâmetros de consulta. Isto é o mesmo que omitir <QueryParams>.

<AssignTo>

Determina em que objeto a política HTTPModifier opera. As opções são as seguintes:

  • Mensagem de pedido: o request recebido pelo proxy da API
  • Mensagem de resposta: o response devolvido pelo servidor de destino
  • Mensagem personalizada: um objeto de pedido ou resposta personalizado

Tenha em atenção que, em alguns casos, não pode alterar o objeto sobre o qual a política HTTPModifier atua. Por exemplo, não pode usar <Add> nem <Set> para adicionar ou alterar parâmetros de consulta (<QueryParams>) ou parâmetros de formulário (<FormParams>) na resposta. Só pode manipular os parâmetros de consulta e os parâmetros de formulário no pedido.

Valor predefinido N/A
Obrigatório? Opcional
Tipo String
Elemento principal <HTTPModifier>
Elementos subordinados Nenhum

Se não especificar <AssignTo> ou se especificar o elemento <AssignTo>, mas não especificar um valor de texto para o elemento, a política atua no pedido ou na resposta predefinidos, que se baseiam no local onde a política é executada. Se a política for executada no fluxo de pedidos, afeta a mensagem de pedido. Se for executada no fluxo de respostas, a política afeta a resposta por predefinição.

O elemento <AssignTo> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
</HTTPModifier>

Exemplo 1

O exemplo seguinte não especifica nenhuma mensagem no texto do elemento <AssignTo>. Isto implica que a política vai agir na mensagem request ou response, consoante o local onde a política é executada.

<HTTPModifier name="assignto-1">
  <AssignTo createNew="false" transport="http" type="request"/>-- no-op -->
  ...
</HTTPModifier>

Se especificar createNew="false" e não fornecer explicitamente um nome de mensagem, os outros atributos de <AssignTo> são irrelevantes. Neste caso, é recomendável omitir completamente o elemento <AssignTo>.

Exemplo 2

O exemplo seguinte cria um novo objeto de pedido, substituindo o objeto existente:

<HTTPModifier name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"/>
  ...
</HTTPModifier>

Quando cria um novo objeto de pedido ou resposta, os outros elementos da política HTTPModifier (como <Add> e <Set>) atuam nesse novo objeto de pedido.

Pode aceder ao novo objeto de pedido noutras políticas mais tarde no fluxo ou enviar o novo objeto de pedido para um serviço externo com uma política ServiceCallout.

Exemplo 3

O exemplo seguinte cria um novo objeto de pedido denominado MyRequestObject:

<HTTPModifier name="assignto-3">
  <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
  ...
</HTTPModifier>

Quando cria um novo objeto de pedido ou resposta, os outros elementos da política HTTPModifier (como <Add> e <Set>) atuam nesse novo objeto de pedido.

Pode aceder ao novo objeto de pedido pelo nome noutras políticas mais tarde no fluxo ou enviar o novo objeto de pedido para um serviço externo com uma política ServiceCallout.

A tabela seguinte descreve os atributos de <AssignTo>:

Atributo Descrição Obrigatório? Tipo
createNew

Determina se esta política cria uma nova mensagem quando atribui valores.

Se true, a política cria uma nova variável do tipo especificado por type (request ou response). Se não especificar o nome da nova variável, a política cria um novo objeto de pedido ou resposta com base no valor de type.

Se false, a política responde de uma de duas formas:

  • Se <AssignTo> conseguir resolver o nome da variável para um pedido ou uma resposta, o processamento continua. Por exemplo, se a política estiver num fluxo de pedidos, a variável é o objeto de pedido. Se a política estiver numa resposta, a variável é o objeto de resposta.
  • Se não for possível resolver <AssignTo> ou se for resolvido para um tipo que não seja de mensagem, a política gera um erro.

Se createNew não for especificado, a política responde de uma das seguintes formas:

  • Se <AssignTo> for resolvido como uma mensagem, o processamento avança para o passo seguinte.
  • Se <AssignTo> não puder ser resolvido ou for resolvido para um tipo que não seja de mensagem, é criada uma nova variável do tipo especificado em type.
Opcional Booleano
transport

Especifica o tipo de transporte para o tipo de mensagem de pedido ou resposta.

O valor predefinido é http (o único valor suportado).

Opcional String
type Especifica o tipo da nova mensagem quando createNew é true. Os valores válidos são request ou response.

O valor predefinido é request. Se omitir este atributo, o Apigee cria um pedido ou uma resposta, consoante o local do fluxo em que esta política é executada.

Opcional String

<DisplayName>

Use em conjunto com o atributo name para etiquetar a política no editor de proxy da IU de gestão com um nome diferente e mais natural.

O elemento <DisplayName> é comum a todas as políticas.

Valor predefinido N/A
Obrigatório? Opcional. Se omitir <DisplayName>, é usado o valor do atributo name da política.
Tipo String
Elemento principal <PolicyElement>
Elementos subordinados Nenhum

O elemento <DisplayName> usa a seguinte sintaxe:

Sintaxe

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Exemplo

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

O elemento <DisplayName> não tem atributos nem elementos subordinados.

<IgnoreUnresolvedVariables>

Determina se o processamento é interrompido quando é encontrada uma variável não resolvida.

Valor predefinido Falso
Obrigatório? Opcional
Tipo Booleano
Elemento principal <HTTPModifier>
Elementos subordinados Nenhum

Definido como true para ignorar as variáveis não resolvidas e continuar o processamento; caso contrário false. O valor predefinido é false.

Definir <IgnoreUnresolvedVariables> como true é diferente de definir o <HTTPModifier>'s continueOnError como true, uma vez que é específico para definir e obter valores de variáveis. Se definir continueOnError como true, o Apigee ignora todos os erros e não apenas os erros encontrados ao usar variáveis.

O elemento <IgnoreUnresolvedVariables> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define <IgnoreUnresolvedVariables> como true:

<HTTPModifier name="HM-Set-Headers">
  <Set>
    <Headers>
      <Header name='new-header'>{possibly-defined-variable}<Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</HTTPModifier>

Uma vez que <IgnoreUnresolvedVariables> está definido como true, se a variável possibly-defined-variable não estiver definida, esta política não gera uma falha.

<Remove>

Remove cabeçalhos, parâmetros de consulta ou parâmetros de formulário de uma mensagem. Uma etiqueta vazia remove todos os parâmetros correspondentes, incluindo cabeçalhos, formparams e queryparams.

A mensagem afetada pode ser um pedido ou uma resposta. Especifica a mensagem sobre a qual o <Remove> atua através do elemento <AssignTo>.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Tipo complexo
Elemento principal <HTTPModifier>
Elementos subordinados <FormParams>
<Headers>
<QueryParams>

Um exemplo de utilização comum para <Remove> é eliminar um parâmetro de consulta ou um cabeçalho que contenha informações confidenciais do objeto de pedido recebido para evitar transmiti-lo ao servidor de back-end.

O elemento <Remove> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

Exemplo 1

O exemplo seguinte remove todos os parâmetros de formulário e um parâmetro de consulta do objeto request:

<HTTPModifier name="HM-remove-2">
  <Remove>
    <!-- Empty (<FormParams/>) removes all form parameters -->
    <FormParams/>
    <QueryParams>
      <QueryParam name="qp1"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O exemplo seguinte remove tudo de um objeto de mensagem:

<HTTPModifier name="HM-remove-3">
  <Remove/>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Normalmente, só o faz se for usar o elemento <Set> para definir alguns valores de substituição na mensagem.

<FormParams> (filho de <Remove>)

Remove os parâmetros de formulário especificados do pedido. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de elementos <FormParam> ou uma matriz vazia
Elemento principal <Remove>
Elementos subordinados <FormParam>

O elemento <FormParams> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Remove>
</HTTPModifier>

Exemplo 1

O exemplo seguinte remove três parâmetros de formulário do pedido:

<HTTPModifier name="HM-remove-formparams-1">
  <Remove>
    <FormParams>
      <FormParam name="form_param_1"/>
      <FormParam name="form_param_2"/>
      <FormParam name="form_param_3"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O exemplo seguinte remove todos os parâmetros de formulário do pedido:

<HTTPModifier name="HM-remove-formparams-2">
  <Remove>
    <FormParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 3

Se existirem vários parâmetros de formulário com o mesmo nome, use a seguinte sintaxe:

<HTTPModifier name="HM-remove-formparams-3">
  <Remove>
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Este exemplo remove f1, f2 e o segundo valor de f3. Se f3 tiver apenas um valor, não é removido.

Pode usar <FormParams> apenas quando os seguintes critérios forem cumpridos:

  • Tipo de mensagem: pedido
  • Content-Type: application/x-www-form-urlencoded

<Headers> (filho de <Remove>)

Remove os cabeçalhos HTTP especificados do pedido ou da resposta, que são especificados pelo elemento <AssignTo>.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de elementos <Header> ou uma matriz vazia
Elemento principal <Remove>
Elementos subordinados <Header>

O elemento <Headers> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Remove>
</HTTPModifier>

Exemplo 1

O exemplo seguinte remove o cabeçalho user-agent do pedido:

<HTTPModifier name="HM-remove-one-header">
  <Remove>
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O exemplo seguinte remove todos os cabeçalhos do pedido:

<HTTPModifier name="HM-remove-all-headers">
  <Remove>
    <Headers/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 3

Se existirem vários cabeçalhos com o mesmo nome, use a seguinte sintaxe:

<HTTPModifier name="HM-remove-headers-3">
  <Remove>
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Este exemplo remove h1, h2 e o segundo valor de h3 do pedido. Se h3 tiver apenas um valor, não é removido.

<QueryParams> (filho de <Remove>)

Remove os parâmetros de consulta especificados do pedido. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de elementos <QueryParam> ou uma matriz vazia
Elemento principal <Remove>
Elementos subordinados <QueryParam>

O elemento <QueryParams> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

Exemplo 1

O exemplo seguinte remove um único parâmetro de consulta do pedido:

<HTTPModifier name="HM-remove-queryparams-1">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O exemplo seguinte remove todos os parâmetros de consulta do pedido:

<HTTPModifier name="HM-remove-queryparams-2">
  &tl;Remove>
      <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 3

Se existirem vários parâmetros de consulta com o mesmo nome, use a seguinte sintaxe:

<HTTPModifier name="HM-remove-queryparams-3">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
        <QueryParam name="qp2"/>
        <QueryParam name="qp3.2"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Este exemplo remove qp1, qp2 e o segundo valor de qp3 do pedido. Se qp3 tiver apenas um valor, não é removido.

Exemplo 4

O exemplo seguinte remove o parâmetro de consulta apikey do pedido:

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Pode usar <QueryParams> apenas quando os seguintes critérios forem cumpridos:

  • Verbos HTTP: GET, POST
  • Tipo de mensagem: pedido

<Set>

Define informações na mensagem de pedido ou resposta, que é especificada pelo elemento <AssignTo>. <Set> substitui os cabeçalhos ou os parâmetros de consulta ou de formulário que já existem na mensagem original, ou adiciona novos se não existirem.

Os cabeçalhos e os parâmetros de consulta e de formulário numa mensagem HTTP podem conter vários valores. Para adicionar valores adicionais para um cabeçalho ou um parâmetro, use o elemento <Add>.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Tipo complexo
Elemento principal <HTTPModifier>
Elementos subordinados <FormParams>
<Headers>
<Path>
<QueryParams>
<StatusCode>
<Verb>
<Version>

O elemento <Set> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <Path>PATH</Path>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

Exemplo

O exemplo seguinte define um cabeçalho específico. Quando esta política é anexada no fluxo de pedidos, permite que o sistema a montante receba um cabeçalho adicional que não foi incluído no pedido de entrada original.

<HTTPModifier name="HM-Set-Header">
  <Set>
    <Headers>
        <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header>
    </Headers>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<FormParams> (filho de <Set>)

Substitui os parâmetros de formulário existentes num pedido e substitui-os pelos novos valores que especificar com este elemento. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de <FormParam> elementos
Elemento principal <Set>
Elementos subordinados <FormParam>

O elemento <FormParams> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Set>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define um parâmetro de formulário denominado myparam com o valor da variável request.header.myparam num novo pedido personalizado:

<HTTPModifier name="HM-set-formparams-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
  </Set>
  <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo>
</HTTPModifier>

Pode usar <FormParams> apenas quando os seguintes critérios forem cumpridos:

  • Verbo HTTP: POST
  • Tipo de mensagem: pedido

Se definir parâmetros de formulário vazios na sua política (<Add><FormParams/></Add>), a política não adiciona parâmetros de formulário. Isto é o mesmo que omitir o <FormParams>.

<Set> altera o Content-Type da mensagem para application/x-www-form-urlencoded antes de a enviar para o ponto final de destino.

<Headers> (filho de <Set>)

Substitui os cabeçalhos HTTP existentes no pedido ou na resposta, que é especificado pelo elemento <AssignTo>.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de <Header> elementos
Elemento principal <Set>
Elementos subordinados <Header>

O elemento <Headers> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Set>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define o cabeçalho x-ratelimit-remaining para o valor da variável ratelimit.Quota-1.available.count:

<HTTPModifier name="HM-Set-RateLimit-Header">
  <Set>
    <Headers>
      <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header>
    </Headers>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Se definir cabeçalhos vazios na sua política (<Set><Headers/></Set>), a política não define cabeçalhos. Isto tem o mesmo efeito que omitir <Headers>.

<Path> (filho de <Set>)

<QueryParams> (filho de <Set>)

Substitui os parâmetros de consulta existentes no pedido por novos valores. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Matriz de <QueryParam> elementos
Elemento principal <Set>
Elementos subordinados <QueryParam>

O elemento <QueryParams> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Set>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define o parâmetro de consulta address para o valor da variável request.header.address:

<HTTPModifier name="HM-set-queryparams-1">
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
  </Set>
</HTTPModifier>

Pode usar <QueryParams> apenas quando os seguintes critérios forem cumpridos:

  • Verbos HTTP: GET, POST
  • Tipo de mensagem: pedido

Se definir parâmetros de consulta vazios na sua política (<Set><QueryParams/></Set>), a política não define parâmetros de consulta. Isto é o mesmo que omitir <QueryParams>.

<StatusCode> (filho de <Set>)

Define o código de estado na resposta. Este elemento não tem efeito num pedido.

Valor predefinido "200" (quando o atributo createNew de <AssignTo> está definido como "true")
Obrigatório? Opcional
Tipo String ou VARIABLE
Elemento principal <Set>
Elementos subordinados Nenhum

O elemento <StatusCode> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
  </Set>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define um código de estado simples:

<HTTPModifier name="HM-set-statuscode-404">
  <Set>
    <StatusCode>404<<StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Exemplo 2

O conteúdo de <StatusCode> é tratado como um modelo de mensagem. Isto significa que um nome de variável entre chavetas será substituído no momento da execução pelo valor da variável referenciada, como mostra o exemplo seguinte:

<HTTPModifier name="set-statuscode-2">
  <Set>
    <StatusCode>{calloutresponse.status.code}</StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Pode usar <StatusCode> apenas quando os seguintes critérios forem cumpridos:

  • Tipo de mensagem: resposta

<Verb> (filho de <Set>)

Define o verbo HTTP no pedido. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo String ou VARIABLE
Elemento principal <Set>
Elementos subordinados Nenhum

O elemento <Verb> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
  </Set>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define um verbo simples no pedido:

<HTTPModifier name="HM-set-verb-1">
  <Set>
    <Verb>POST</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Exemplo 2

O conteúdo de <Verb> é tratado como um modelo de mensagem. Isto significa que um nome de variável entre chavetas é substituído no momento da execução pelo valor da variável referenciada.

O exemplo seguinte usa uma variável para preencher um verbo:

<HTTPModifier name="HM-set-verb-to-dynamic-value">
  <Set>
    <Verb>{my_variable}</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Pode usar <Verb> apenas quando os seguintes critérios forem cumpridos:

  • Tipo de mensagem: pedido

<Version> (filho de <Set>)

Define a versão HTTP num pedido. Este elemento não tem efeito numa resposta.

Valor predefinido N/A
Obrigatório? Opcional
Tipo String ou VARIABLE
Elemento principal <Set>
Elementos subordinados Nenhum

O elemento <Version> usa a seguinte sintaxe:

Sintaxe

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

Exemplo 1

O exemplo seguinte define o número da versão como 1.1:

<HTTPModifier name="HM-set-version-1">
  <Set>
    <Version>1.1</Version>
  </Set>
</HTTPModifier>

Exemplo 2

O exemplo seguinte usa uma variável entre chavetas para definir o número da versão:

<HTTPModifier name="HM-set-version-2">
  <Set>
    <Version>{my_version}</Version>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

O conteúdo de <Version> é tratado como um modelo de mensagem. Isto significa que um nome de variável entre chavetas é substituído no momento da execução pelo valor da variável referenciada.

Pode usar <Version> apenas quando os seguintes critérios forem cumpridos:

  • Tipo de mensagem: pedido

Crie mensagens de pedido personalizadas

Pode usar o HTTPModifier para criar uma mensagem de pedido personalizada. Depois de criar um pedido personalizado, pode usá-lo das seguintes formas:

  • Aceder às respetivas variáveis noutras políticas
  • Transmiti-la a um serviço externo

Para criar uma mensagem de pedido personalizada, use o elemento <AssignTo> na sua política HTTPModifier. Defina createNew como true e especifique o nome da nova mensagem no corpo do elemento, como mostra o exemplo seguinte:

<HTTPModifier name="assignto-3">
    <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
    ...
  </HTTPModifier>

Por predefinição, o Apigee não faz nada com a mensagem de pedido personalizada. Depois de o criar, o Apigee continua o fluxo com o pedido original. Para usar o pedido personalizado, adicione uma política que use a mensagem de pedido e faça referência explícita à mensagem de pedido criada recentemente na configuração dessa política. Isto permite-lhe transmitir o pedido personalizado para um ponto final de serviço externo.

Os exemplos seguintes criam mensagens de pedido personalizadas:

Exemplo 1

O exemplo seguinte cria um objeto de pedido personalizado com HTTPModifier:

<HTTPModifier name="HTTPModifier-3">
  <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.addy}</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</HTTPModifier>

Este exemplo:

  • Cria um novo objeto de mensagem de pedido denominado MyCustomRequest.
  • No MyCustomRequest, esta política:
    • Define o parâmetro de consulta address na mensagem personalizada para o valor do parâmetro de consulta addy do pedido recebido.
    • Define o verbo HTTP como GET.
  • Define <IgnoreUnresolvedVariables> como false. Quando <IgnoreUnresolvedVariables> é false, se uma das variáveis referenciadas na configuração da política não existir, o Apigee entra no estado de falha no fluxo da API.

Exemplo 2

Segue-se outro exemplo que demonstra como criar um objeto de pedido personalizado com HTTPModifier:

<HTTPModifier name="HTTPModifier-2">
  <AssignTo createNew="true" type="request">partner.request</AssignTo>
  <Set>
    <Verb>POST</Verb>
  </Set>
</HTTPModifier>

Este exemplo cria um novo pedido personalizado denominado partner.request. Em seguida, define o <Verb> no novo pedido.

Pode aceder às várias propriedades de uma mensagem personalizada noutra política HTTPModifier que ocorre mais tarde no fluxo. O exemplo seguinte obtém o valor de um cabeçalho de uma resposta personalizada denominada e coloca-o num novo cabeçalho na mensagem de pedido:

<HTTPModifier name="HM-Set-Header">
  <AssignTo>request</AssignTo>
  <Set>
    <Headers>
      <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header>
    </Headers>
  </Set>
</HTTPModifier>

Códigos de erro

Esta secção descreve os códigos de falha e as mensagens de erro devolvidas, bem como as variáveis de falha definidas pelo Apigee quando esta política aciona um erro. Estas informações são importantes para saber se está a desenvolver regras de falhas para tratar falhas. Para saber mais, consulte o artigo O que precisa de saber acerca dos erros de políticas e o artigo Processamento de falhas.

Erros de tempo de execução

Estes erros podem ocorrer quando a política é executada.

Código de falha Estado de HTTP Causa Corrigir
entities.UnresolvedVariable 500 A variável do modelo de mensagem está indefinida ou fora do âmbito.
steps.httpmodifier.InvalidStatusCode 500 O valor resolvido do código de estado não é válido. Consulte a string de falha para mais informações.

Erros de implementação

Estes erros podem ocorrer quando implementa um proxy que contém esta política.

Nome do erro Causa Corrigir
InvalidIndex Se o índice especificado nos elementos <Remove> da política HTTPModifier for 0 ou um número negativo, a implementação do proxy de API falha.

Variáveis de falha

Estas variáveis são definidas quando esta política aciona um erro no tempo de execução. Para mais informações, consulte o artigo O que precisa de saber sobre os erros de políticas.

Variáveis Onde Exemplo
httpmodifier.POLICY_NAME.failed POLICY_NAME é o nome especificado pelo utilizador da política que gerou a falha. httpmodifier.HM-SetResponse.failed = true

Exemplo de resposta de erro

{
   "fault":{
      "detail":{
         "errorcode":"steps.httpmodifier.InvalidStatusCode"
      },
      "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request"
   }
}

Exemplo de regra de falha

<FaultRule name="HTTPModifier Faults">
    <Step>
        <Name>HM-CustomNonMessageTypeErrorResponse</Name>
        <Condition>(fault.name Matches "InvalidStatusCode")</Condition>
    </Step>
    <Condition>(httpmodifier.failed = true)</Condition>
</FaultRule>

Esquemas

Cada tipo de política é definido por um esquema XML (.xsd). Para referência, os esquemas de políticas estão disponíveis no GitHub.