# Automatize comportamentos com o Rules Engine

import Tabs from '~/components/tabs/Tabs'
import Code from '~/components/Code/Code.astro'

Implementar regras em sua aplicação usando o [Rules Engine](/pt-br/documentacao/produtos/build/applications/rules-engine/) permite que você determine as tarefas que ela deve executar em cenários específicos sem modificar o código-fonte da sua aplicação.

Este guia demonstra o processo de criação de regras com um exemplo prático, mas a maioria das regras será única para cada aplicação e suas necessidades. Além de ativar variáveis como [device groups](/pt-br/documentacao/produtos/guias/build/criar-device-groups/), [configurações de cache](/pt-br/documentacao/produtos/guias/build/ajustar-cache-settings/) e [origens](/pt-br/documentacao/produtos/guias/build/definir-origens/), você pode criar uma grande variedade de regras nas fases de solicitação e resposta.

Com esse guia, você irá criar uma regra na fase de resposta para remover um cabeçalho HTTP usando o comportamento **Filter Response Header**.

:::caution[Atenção]
Para desbloquear todas as funcionalidades do Rules Engine, você deve ativar o módulo [Application Accelerator](/pt-br/documentacao/produtos/build/applications/application-accelerator/). Se o **Application Accelerator** estiver ativado, a transferência de dados pode gerar custos relacionados ao uso. Consulte a [página de preços](/pt-br/documentacao/produtos/precos/) para mais informações.
:::

---

<Tabs client:visible>
    <Fragment slot="tab.console">Console</Fragment>
    <Fragment slot="tab.api">API</Fragment>

<Fragment slot="panel.console">
Para ativar o módulo **Application Accelerator**:

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Applications**.
2. Clique na application que você deseja configurar.
3. Ative o módulo **Application Accelerator**.
4. Clique no botão **Save**.

O cabeçalho `Server` armazena informações sobre o servidor que gerou a resposta. Ao remover este cabeçalho, os usuários finais não receberão informações sobre a infraestrutura da sua aplicação, aumentando sua segurança ao reduzir as informações disponíveis para possíveis invasores.

:::note
Cuidado ao remover qualquer cabeçalho de sua application para que esta ação não interfira em nenhum padrão e diretriz aplicável.
:::

Para remover o cabeçalho `Server`:

1. Navegue até a aba **Rules Engine**.
2. Clique no botão **+ Rule**.
3. Dê um nome à sua regra e, se necessário, uma descrição.
4. Selecione **Response Phase**.
5. Na seção **Criteria**, selecione a variável `${uri}`.
6. Como operador de comparação, selecione **starts with**.
7. Como argumento, adicione o valor `/`.
8. Na seção **Behaviors**, selecione **Filter Response Header**.
9. Como argumento, adicione `Server`.
10. Clique no botão **Save**.
</Fragment>

<Fragment slot="panel.api">
1. Execute a seguinte requisição `PATCH` em seu terminal, substituindo `[TOKEN VALUE]` por seu [personal token](/pt-br/documentacao/produtos/guias/personal-tokens/) e a variável `<application_id>` por [seu ID de application](/pt-br/documentacao/produtos/guias/build/definir-configuracoes-principais/) para ativar o módulo [Application Accelerator](/pt-br/documentacao/produtos/build/applications/application-accelerator/):

<Code lang="bash" code={` 
curl --request PATCH \
  --url https://api.azion.com/v4/edge_application/applications/<application_id> \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "modules": {
    "application_accelerator": {
      "enabled": true
    }
  },
  "active": true,
  "debug": false
}'
`} />

2. Você receberá uma resposta com o valor atualizado.
3. Execute a seguinte requisição `POST` para criar uma regra na fase de resposta, substituindo `<application_id>` pelo valor `id` que você recebeu na resposta anterior:

<Code lang="bash" code={` 
curl --request POST \
  --url https://api.azion.com/v4/edge_application/applications/<application_id>/response_rules \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "FilterRespHeader Server",
    "active": true,
    "criteria": [
      [
        {
          "conditional": "if",
          "variable": "\${uri}",
          "operator": "is_equal",
          "argument": "/"
        }
      ]
    ],
    "behaviors": [
      {
        "type": "filter_response_header",
        "attributes": { "value": "Server" }
      }
    ],
    "description": "Filtrar cabeçalho Server na resposta para /"
}'
`} />

4. Aguarde alguns minutos para que as alterações se propaguem.

:::tip
Consulte a [documentação da API da Azion](https://api.azion.com/) e a [especificação OpenAPI](https://github.com/aziontech/azionapi-openapi/) para saber mais sobre todos os recursos disponíveis via API.
:::

</Fragment>
</Tabs>