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  Opcionalmente, use o elemento  | 
| continueOnError | falso | Opcional | Definido como falsepara devolver um erro quando uma política falha. Este comportamento é o esperado para a maioria das políticas. Definido comotruepara que a execução do fluxo continue mesmo depois de uma política falhar. Veja também: | 
| enabled | verdadeiro | Opcional | Defina como truepara aplicar a política. Defina comofalsepara 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>.
 Para substituir cabeçalhos ou parâmetros existentes, use o elemento  | 
| <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>.
 | 
| 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, comcurl, 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, comcurladicione-H "Content-Length: 0"ao seu pedido.
 
- Dados do formulário: definido para algum valor ou 
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 requestrecebido pelo proxy da API
- Mensagem de resposta: o responsedevolvido 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  Se  
 Se  
 | Opcional | Booleano | 
| transport | Especifica o tipo de transporte para o tipo de mensagem de pedido ou resposta. O valor predefinido é  | Opcional | String | 
| type | Especifica o tipo da nova mensagem quando createNewétrue. Os valores
          válidos sãorequestouresponse.O valor predefinido é  | 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 atributonameda 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 createNewde<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 addressna mensagem personalizada para o valor do parâmetro de consultaaddydo pedido recebido.
- Define o verbo HTTP como GET.
 
- Define o parâmetro de consulta 
- Define <IgnoreUnresolvedVariables>comofalse. 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. | build | 
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íticaHTTPModifierfor0ou um número negativo, a implementação do proxy de API falha. | build | 
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.