---
name: azion-crie-uma-regra-de-aplicacao
description: >-
  Adicione uma regra a uma aplicação pelo Azion Console, pela Azion CLI ou pela API e aplique um cache setting a todo caminho que começa com /static/.
---

# Crie uma regra de aplicação

Você pode criar uma regra no [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine/) pelo Azion Console, pela Azion CLI ou pela API. Uma regra executa seus behaviors em toda requisição que corresponde aos seus critérios. A aplicação muda o que faz, e o seu código continua como está. As regras também são a forma como a aplicação usa os seus cache settings, instâncias de função e connectors. A regra desta página aplica um [cache setting](/pt-br/documentacao/plataforma/applications/cache/cache-settings/) aos caminhos que começam com `/static/`.

Para reescrever o caminho de uma requisição ou remover o header `Server` das respostas, consulte [Crie regras de request e response](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/rules-engine/). Um firewall tem regras próprias. Para essas regras, consulte [Crie uma regra de firewall](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/trabalhar-com-rules-engine/).

---

Escolha sua interface uma vez. Os pré-requisitos e o procedimento desta página seguem essa escolha.

## Pré-requisitos

- Uma aplicação que serve o seu tráfego por meio de um workload. Para criar uma, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).
- Um cache setting nessa aplicação. Para criar um, consulte [Crie um cache setting](/pt-br/documentacao/guias/performance-e-confiabilidade/cache-e-purge/ajustar-cache-settings/).

**Console**

- Acesso ao Azion Console. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).

**CLI**

- Azion CLI instalada e autorizada com a sua conta. Os comandos desta página correspondem à Azion CLI 4.23.0. Para mais informações, consulte [Azion CLI](/pt-br/documentacao/devtools/cli/).
- O ID da aplicação. Azion Console o mostra no endereço da página da aplicação, depois de `/applications/edit/`.
- O ID do cache setting. A aba **Cache Settings** da aplicação o lista na coluna **ID**.

**API**

- Um personal token, enviado no header `Authorization` como `Token [TOKEN VALUE]`. Para criar um, consulte [Como criar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- `curl` ou outro cliente HTTP.
- O ID da aplicação. Azion Console o mostra no endereço da página da aplicação, depois de `/applications/edit/`.
- O ID do cache setting. A aba **Cache Settings** da aplicação o lista na coluna **ID**.

---

## Aplique um cache setting a um caminho

A regra desta seção é executada na **Request Phase**. Ela corresponde às requisições cujo `${uri}` começa com `/static/`. O behavior **Set Cache Policy** dela aplica o seu cache setting a essas requisições. As requisições para outros caminhos mantêm o comportamento de cache que já tinham. O critério também corresponde a caminhos mais longos, como `/static/css/site.css`.

A fase de uma regra é fixada quando você a cria. Para executar um behavior na **Response Phase** em vez disso, crie uma nova regra nessa fase.

A variável `${uri}` não precisa de nenhum Produto na aplicação. **Set Cache Policy** depende de Cache, que toda aplicação nova executa. Outras variáveis e behaviors precisam de Application Accelerator, Image Processor ou Functions habilitado na aplicação. No Azion Console, cada uma dessas opções carrega uma nota como `- Required Application Accelerator`. Para habilitar um Produto, consulte [Habilite Produtos em uma aplicação](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/criar-uma-aplicacao/).

**Console**

Para criar a regra pelo Azion Console:

1. **Abra a aplicação**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** e selecione a sua aplicação.

2. **Selecione a aba Rules Engine**

3. **Selecione + Rule**

4. **Nomeie a regra**

   Na seção **General**, insira um **Name**, como `apply-static-assets-cache`.

5. **(Opcional) Descreva a regra**

   Em **Description**, insira uma nota sobre o que a regra faz. A nota aceita até 1.000 caracteres.

6. **Selecione a fase**

   Na seção **Phase**, selecione **Request Phase**.

7. **Selecione a variável**

   Na seção **Criteria**, selecione `${uri}` como variável.

8. **Selecione o operador**

   Selecione `starts_with` como operador.

9. **Insira o argumento**

   Insira `/static/` como argumento.

10. **Selecione o behavior**

    Na seção **Behaviors**, selecione **Set Cache Policy**.

11. **Selecione o cache setting**

    No segundo dropdown do behavior, selecione o seu cache setting.

12. **Mantenha a regra ativa**

    Em **Status**, confirme que **Active** está ativado.

13. **Selecione Save**

A regra aparece na aba **Rules Engine**, sob o título **Request**. Para executar um segundo behavior na mesma regra, selecione **+ Add Behavior** antes de salvá-la.

**CLI**

Para criar a regra pela Azion CLI, salve a definição dela como `rule.json`. O arquivo contém o `name` da regra, uma `description` opcional, se ela está `active`, os `criteria` e os `behaviors` dela:

```json
{
  "name": "apply-static-assets-cache",
  "description": "Applies the static-assets cache setting to /static/",
  "active": true,
  "criteria": [
    [
      {
        "variable": "${uri}",
        "operator": "starts_with",
        "conditional": "if",
        "argument": "/static/"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "set_cache_policy",
      "attributes": {
        "value": "<cache-setting-id>"
      }
    }
  ]
}
```

`criteria` é uma lista de grupos, e cada grupo é uma lista de condições. A primeira condição recebe `"conditional": "if"`. No behavior `set_cache_policy`, `attributes.value` contém o ID do seu cache setting.

Em seguida, crie a regra na fase de requisição, com o ID da sua aplicação no lugar de `<application-id>`:

```bash
azion create rules-engine --application-id <application-id> --phase request --file rule.json
```

O comando imprime o ID da nova regra:

```text
Created Rules Engine with ID <rule-id>
```

A flag `--phase` define a fase da regra. O arquivo contém o mesmo corpo que a API aceita.

**API**

Para criar a regra pela API, envie uma requisição `POST` ao endpoint `request_rules` da sua aplicação. O endpoint define a fase, e o corpo carrega `name`, `description`, `active`, `criteria` e `behaviors` da regra:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/applications/<application-id>/request_rules \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "apply-static-assets-cache",
  "description": "Applies the static-assets cache setting to /static/",
  "active": true,
  "criteria": [
    [
      {
        "variable": "${uri}",
        "operator": "starts_with",
        "conditional": "if",
        "argument": "/static/"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "set_cache_policy",
      "attributes": {
        "value": "<cache-setting-id>"
      }
    }
  ]
}'
```

`criteria` é uma lista de grupos, e cada grupo é uma lista de condições. A primeira condição recebe `"conditional": "if"`. No behavior `set_cache_policy`, `attributes.value` contém o ID do seu cache setting.

A API responde `202` e retorna a regra:

```text
{"state":"pending","data":{"id":<rule-id>,…,"behaviors":[{"type":"set_cache_policy","attributes":{"value":<cache-setting-id>}}],"order":0,…}}
```

A resposta adiciona o `id` e o `order` da regra e retorna o ID do cache setting como número. O `order` é a posição da regra entre as regras de requisição da aplicação, contada a partir de `0`. A primeira regra de requisição de uma aplicação recebe `0`, e a seguinte recebe `1`.

Enquanto Application Accelerator estiver desativado na aplicação, a API recusa um critério em `${request_uri}` com `400`:

```json
{"errors":[{"code":"25047","title":"Missing Required Modules","detail":" It requires any of the following modules to be enabled: ['application_accelerator'].","status":"400","source":{"pointer":"/data/criteria/0/0/variable"},"meta":{"message_prefix":"","owner_modules":"any","missing_required_modules":["application_accelerator"]}}]}
```

Use `${uri}`, que não precisa de nenhum Produto, ou habilite Application Accelerator antes de enviar a regra. Para todas as variáveis, operadores e behaviors que o corpo aceita, consulte [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine/) e a [referência da Azion API](https://api.azion.com/).

Uma nova regra pode levar alguns minutos para se propagar. Para ler o status de cache de uma resposta em `/static/`, consulte [Verifique o status de cache de uma resposta](/pt-br/documentacao/guias/performance-e-confiabilidade/cache-e-purge/verificar-tempo-de-cache-da-pagina/).

---

## Próximos passos

- [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine.md): Cada variável, operador e behavior que uma regra de aplicação aceita, por fase.
- [Crie regras de request e response](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/rules-engine.md): Reescreva o caminho de uma requisição e remova o header Server das respostas, no Azion Console.
- [Verifique o status de cache de uma resposta](/pt-br/documentacao/guias/performance-e-confiabilidade/cache-e-purge/verificar-tempo-de-cache-da-pagina.md): Leia se uma resposta no caminho da regra veio do cache.
- [Habilite Produtos em uma aplicação](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/criar-uma-aplicacao.md): Ative Application Accelerator, Image Processor ou Functions para usar as variáveis e os behaviors que eles adicionam.
- [Crie device groups](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/criar-device-groups.md): Agrupe dispositivos por User-Agent para gerenciar os behaviors da aplicação e as políticas de cache de cada grupo.
