Pular para o conteúdo

Ambientes

Um ambiente é um conjunto nomeado de variáveis armazenado como JSON. Um workspace pode ter qualquer número deles; exatamente um está ativo por vez. O ambiente ativo é registrado no arquivo de estado pessoal do workspace, então sobrevive a reinícios, e se aquele ambiente não existir mais o Fetchpier cai para o primeiro disponível.

As variáveis definidas por um ambiente alimentam placeholders {{name}}, campos de auth e passphrases de TLS. Pre-request scripts podem lê-las e escrevê-las — veja Variáveis.

Cada ambiente vive em sua própria pasta, nomeada conforme o ambiente em uma forma segura para o sistema de arquivos: caracteres acentuados são transliterados para sua letra base (Producción → produccion), todo o resto fora de letras e dígitos se torna um hífen, e nomes muito longos são encurtados em um hífen. Esse nome de pasta é o handle público do ambiente — é o que o controle de versão rastreia e o que uma execução de linha de comando nomeia — enquanto o nome de exibição é mantido exatamente como você digitou.

Dois ambientes não podem cair na mesma pasta: um nome que colide com um existente, ou que não contém nenhuma letra ou dígito, é rejeitado na hora e você é solicitado a escolher outro. O Fetchpier nunca inventa um nome em seu lugar. Um nome rejeitado deixa o campo aberto com o texto como você digitou, para que você o corrija em vez de redigitá-lo.

Separadamente de ambos os nomes, cada ambiente carrega um identificador interno estável que nunca muda. É isso que torna o rename seguro: renomear move a pasta e troca o rótulo, mas o ambiente que ele é continua o mesmo, então a seleção ativa, seu cookie jar e seus valores locais à máquina o acompanham sem nada para reapontar. Renomear a pasta de um ambiente à mão fora da app é uma forma legítima de renomeá-lo: o Fetchpier lê o que encontra, adota o nome da pasta como nome de exibição, e nunca move os arquivos de volta.

O painel de Ambientes permite criar, editar e trocar de ambiente. Clicar em um ambiente da lista o abre para edição; clicar com o botão direito faz o mesmo e abre um menu com renomear, duplicar e apagar, então o menu nunca age sobre um ambiente cujas variáveis você não pode ver:

  • Renomear edita a linha no lugar, pré-preenchida com o nome atual. Move a pasta do ambiente e o rerrotula; nada mais muda — o mesmo ambiente continua selecionado e ativo, e seus cookies e valores locais à máquina se movem com ele.
  • Duplicar abre uma nova linha abaixo da origem, pré-preenchida com o primeiro <nome>-copy livre (depois -copy-2, …). Nada é gravado até o nome ser confirmado. A cópia recebe cada variável da origem literalmente — planas, secretas e “precisa de valor” igualmente, então valores criptografados continuam funcionando sem nunca serem descriptografados — mas começa com um cookie jar vazio e sem overrides de valores locais: esse estado é pessoal de uma máquina e não faz parte do que está sendo compartilhado.
  • Apagar pede confirmação em um diálogo que nomeia o ambiente e afirma que seus cookies e overrides de valores locais à máquina vão com ele e não têm outra cópia. Quando o ambiente apagado era o selecionado, o primeiro ambiente restante toma seu lugar.

Uma caixa de busca fica acima da lista, com os botões de ordem à direita. A busca encontra o texto em qualquer parte do nome do ambiente, ignorando maiúsculas e acentos (produccion encontra Producción), e avisa quando nada corresponde — o campo de criação continua disponível, então uma busca que não encontra nada está a uma tecla de criar o que você procurava. A ordem é por nome, A → Z ou Z → A; o painel abre em A → Z. Ambas são formas de olhar a lista, não mudanças nela: nada é gravado, nenhum ambiente se move em disco, e ambas são redefinidas na próxima vez que o painel é aberto. Uma linha cujo nome está sendo editado continua visível mesmo quando a busca deixa de corresponder a ela, então um nome rejeitado e seu erro nunca são filtrados no meio da correção.

Os ambientes aparecem em ordem alfabética onde quer que você escolha um. O dropdown de ambiente é ordenado por nome, e o painel de manutenção também, por padrão — a ordem em que as pastas estão em disco é um acaso, não uma escolha de ninguém.

O painel é um editor, não um seletor. Qual ambiente está ativo é escolhido apenas por você, pelo dropdown de ambiente. Selecionar uma linha no painel de manutenção carrega as variáveis daquele ambiente para edição e nada mais — fechar o painel nunca muda contra qual ambiente a próxima requisição resolve. A única exceção é apagar o ambiente ativo: ele não existe mais, então o primeiro restante toma seu lugar.

Dentro de um ambiente, todas as variáveis aparecem em uma única lista cujas linhas você pode reordenar arrastando; a ordem escolhida é significativa e persiste entre recarregamentos. Uma variável não compartilhada — uma que tem um valor local que o arquivo de ambiente compartilhado não tem — é a única exceção: ela fica no fim da lista e não tem handle de arraste até chegar ao arquivo compartilhado, porque até então não há onde registrar sua posição.

Um pequeno conjunto de comportamentos HTTP é controlável em dois níveis: um default do workspace e um override por requisição. Os overrides por requisição têm prioridade; caso contrário, aplica-se o default do workspace.

SettingSignificado
httpVersionauto (negocia — HTTP/2 se ambas as pontas suportarem), http1 ou http2.
verifySslSe o certificado TLS do servidor é verificado. Por padrão, verdadeiro.
followRedirectsSe respostas 3xx são seguidas automaticamente.
maxRedirectsLimite de redirecionamentos seguidos.
followAuthorizationOnRedirectSe o cabeçalho Authorization é mantido quando um redirecionamento cruza de host. Por padrão, falso (cabeçalho removido).
encodeUrlQuando ligado, os valores dos parâmetros de query são codificados em porcentagem depois da resolução de {{variable}}, então um valor resolvido não pode quebrar a query; quando desligado, os valores resolvidos são enviados em cru — uma válvula de escape em que você assume a responsabilidade pelos bytes.
disableCookieJarIgnora a anexação e captura de cookies nesta requisição.

Mudanças no nível do workspace são transmitidas a cada janela aberta, então usuários concorrentes do mesmo workspace veem comportamento consistente.

Além das settings overridáveis por requisição acima, o painel de settings do workspace expõe uma política no nível de todo o workspace:

SettingSignificado
binaryFileLimits.warnBytesLimite de tamanho de arquivo acima do qual anexar um body binário dispara um pedido de confirmação. Padrão 50 MB.
binaryFileLimits.blockBytesLimite de tamanho de arquivo acima do qual um anexo binário é rejeitado de imediato. Padrão 100 MB.

Esses dois limites deliberadamente não são por requisição: o limite é uma propriedade do que este workspace pode carregar — em particular, do que seu remoto Git vai aceitar em um push — e não uma propriedade das requisições individuais.