# Configurar ambientes

> Um ambiente é um conjunto de variáveis — URL base, tokens, headers — que você troca de uma vez. Defina um para local, staging e produção, e alterne entre eles sem tocar em nenhuma requisição.

## Criar um ambiente

1. Aperte <kbd>⌘⇧E</kbd> para abrir **Manage Environments**, ou escolha pela pílula **● ENV** na ponta direita da barra de ferramentas.
2. Toque em **New environment**. Ele aparece na lista já em modo renomear; escreva um nome — `Staging`, `Production` — e aperte <kbd>↩</kbd>. O ponto colorido é derivado do nome, então o mesmo nome sempre recebe a mesma cor.
3. Adicione variáveis à direita: uma **KEY**, um **VALUE**, e se a linha está **Enabled** e é **Secret**. `BASE_URL` e `API_KEY` costumam ser as duas primeiras.

Você também pode começar pela paleta: <kbd>⌘K</kbd> e *New Environment…*.

Os ambientes pertencem ao workspace em que você está. O primeiro já vem com um chamado **Default**, que contém o `baseUrl` usado pelas requisições de exemplo.

## Usar variáveis em uma requisição

Envolva o nome em chaves duplas em qualquer campo: URL, parâmetros de query, headers, body, campos de auth. O Mariner resolve o valor contra o ambiente ativo na hora de enviar.

<figure class="code">
<figcaption><span class="method post">POST</span> barra de URL</figcaption>

```text
{{BASE_URL}}/launch/v1/manifests?key={{API_KEY}}
```

</figure>

Com **Staging** ativo, `{{BASE_URL}}` resolve para `https://staging.acme-labs.dev`. Troque para **Production** e as mesmas requisições apontam para o servidor real.

Abaixo do campo de URL, uma linha de prévia mostra a URL exata que vai sair pela rede, com os segredos mascarados; o botão de copiar ao lado copia a real.

No campo, a **cor de um token diz o estado dele** e a sintaxe `{{ }}` / `:` diz de que família ele é — então os dois jeitos de estar quebrado ficam iguais nas duas:

- **Violeta** <code class="var">{{token}}</code> — resolvido pela cascata de ambientes.
- **Azul** <code class="path-var">:slug</code> — uma variável de path desta requisição, preenchida.
- **Âmbar** <code class="var-empty">{{token}}</code> · <code class="var-empty">:slug</code> — declarado, mas com valor vazio. Substitui por nada, o que apaga um segmento do caminho sem avisar.
- **Vermelho** <code class="var-missing">{{token}}</code> · <code class="var-missing">:slug</code> — não está declarado em lugar nenhum. Vai literal pela rede.

Passar o cursor por um token mostra seu valor e de qual camada ele vem.

<figure class="shot">
<img src="/docs/pt-br/environments.webp" alt="Uma requisição com a URL {{baseUrl}}/status/:code: a variável de ambiente em violeta, a variável de path em azul e a URL resolvida https://httpbin.org/status/200 logo abaixo do campo" width="1600" height="1000" loading="lazy">
<figcaption>VARIÁVEIS · {{baseUrl}} do ambiente, :code de Params — resolvidas logo abaixo do campo</figcaption>
</figure>

## Trocar de ambiente

Três jeitos, do mais rápido ao mais visual:

- <kbd>⌘E</kbd> abre o seletor de qualquer tela — setas até o ambiente, <kbd>↩</kbd>.
- <kbd>⌘K</kbd> e digite o nome do ambiente: *Switch Environment › Production*.
- Clique na pílula **● ENV** da barra de ferramentas.

Escolher **No Environment** deixa em jogo apenas as variáveis locais da requisição. Ao trocar de workspace, o Mariner mantém ativo o ambiente de mesmo nome, se o novo workspace tiver um.

## Gerenciar variáveis

Clique com o botão direito em uma variável no gerenciador para **Duplicate**, **Copy to Environment ▸**, **Move to Environment ▸** e **Delete**. Copiar ou mover para outro ambiente substitui lá a variável de mesma chave — útil para promover um valor de Staging para Production. Clique com o botão direito em um ambiente para **Rename**, **Duplicate** (com variáveis) e **Delete**.

<aside class="callout" data-label="VALORES FALTANDO">
O Mariner se recusa a enviar uma requisição que ainda contém um <code>{{token}}</code> ou um <code>:slug</code> sem resolver, e diz quais são. E não precisa enviar para descobrir: o chip <code>{}</code> abaixo do campo de URL leva a contagem de tokens, e fica âmbar com um ⚠ e o número de variáveis que não contribuem com nada.

Abra ele e cada token quebrado tem um **Define** ao lado. Para um <code>{{token}}</code> isso abre o gerenciador de ambientes já na linha daquela variável — criando a linha quando a variável ainda não existe, no ambiente que a cascata apontou — com o cursor em VALUE. Para um <code>:slug</code> abre a seção Path Variables da aba <b>Params</b>. O painel de resposta oferece o mesmo conserto depois de um envio bloqueado.
</aside>

---
Source: https://marinerhttp.dev/pt-br/docs/environments · Mariner docs
