#Sua primeira requisição
Dez segundos entre abrir o app e ter uma resposta.
- Aperte CtrlN para uma nova requisição — ou use o + na faixa de abas.
- Escolha o método e digite a URL.
{{baseUrl}}/pokemon/pikachufunciona depois que você definirbaseUrl(veja Variáveis). - Aperte CtrlEnter — ou Enter com o cursor no campo da URL — para enviar.
- A resposta aparece à direita: status, tempo, tamanho e o corpo formatado.
#Workspaces, pastas e abas
Um workspace reúne pastas, requisições e ambientes. Alterne entre eles com CtrlR ou pelo menu no topo da barra lateral.
- As pastas agrupam requisições, podem ser aninhadas e podem ter suas próprias variáveis, autenticação e scripts, que valem para tudo dentro delas.
- Arraste e solte para reordenar ou mover uma requisição para uma pasta. Arrastar fica desligado enquanto há um filtro ativo, para nada cair no lugar errado.
- Filtre a árvore na caixa acima dela, ou vá direto a uma requisição com CtrlP.
- Clique com o botão direito numa aba para localizá-la na árvore, fechá-la, fechar as outras ou fechar todas. CtrlW fecha a aba ativa; CtrlShiftE busca entre as abertas.
- CtrlB esconde e mostra a barra lateral.
#Montando uma requisição
Cada requisição tem um conjunto de abas abaixo da barra da URL:
| Aba | Para que serve |
|---|---|
| Parâmetros | Parâmetros de consulta. Editar uma linha reescreve a URL, e editar a URL atualiza as linhas. |
| Corpo | Nenhum, JSON, texto, XML, formulário, multipart ou GraphQL. JSON e XML têm formatador. |
| Cabeçalhos | Um Content-Type compatível com o tipo do corpo é adicionado automaticamente, a menos que você defina um. |
| Autenticação | Herdar da pasta, nenhuma, token bearer, basic ou uma chave de API em um cabeçalho ou na consulta. |
| Scripts | Scripts de pré-requisição e pós-resposta — veja Scripts. |
| Documentação | Documente os campos de uma requisição — nome, exemplo, descrição, obrigatório. Eles vão para uma exportação OpenAPI. |
| Versões | As últimas 20 versões salvas desta requisição, cada uma restaurável. |
Defina a autenticação uma vez numa pasta e toda requisição dentro dela a herda; uma requisição ainda pode escolher a sua.
#Variáveis e ambientes
Escreva {{nome}} em qualquer lugar — URL, cabeçalhos, corpo, autenticação — e o Carom preenche na hora de enviar.
De onde vem um valor
- A pasta em que a requisição está. Com pastas aninhadas, vence a mais interna.
- O ambiente ativo, escolhido no seletor no canto superior direito.
- O ambiente base, compartilhado por todos os outros.
Passe o mouse numa variável para ver o valor e qual dos três a forneceu. Uma variável que não está definida em lugar nenhum aparece em vermelho.
Definir e alterar
- Passe o mouse numa variável, na URL ou dentro de um corpo, e edite ali mesmo — ou defina, se ela ainda não existir.
- Selecione qualquer texto, clique com o botão direito e escolha Definir uma variável existente ou Nova variável…. O valor vai para o ambiente selecionado, e o que você selecionou é trocado pela referência.
- CtrlE abre a gaveta de ambientes, um editor rápido ao lado da requisição que mostra o ambiente ativo e as variáveis da pasta. Gerenciar ambientes, no seletor, abre o diálogo completo para adicionar, renomear, colorir, copiar entre eles e excluir ambientes.
#Dados gerados
Variáveis inventadas na hora de enviar. Úteis para fixtures, formulários e volumes de dados com cara de verdade.
Escreva uma entre chaves — {{$randomEmail}} — e ela vira um valor novo a cada envio. Cada ocorrência recebe o seu próprio valor, então dois {{$randomFullName}} no mesmo corpo são duas pessoas diferentes. É isso que separa um gerador de uma variável.
- Os nomes são os do Postman, então uma coleção que os usava continua funcionando.
- Nomes, cidades, ruas e telefones seguem o idioma da interface. Identificadores, números e datas não têm idioma e nunca mudam.
- Para fixar o idioma de forma independente — uma API que valida endereços em inglês, lida por quem trabalha em português — defina Dados gerados em Configurações → Geral.
- Uma variável que você define com o mesmo nome vence o gerador.
- Um gerador com erro de digitação continua vermelho, que é o caso que vale notar.
Identificadores e timestamps 7
{{$guid}}{{$randomUUID}}{{$timestamp}}{{$isoTimestamp}}{{$randomBankAccount}}{{$randomBankAccountIban}}{{$randomCreditCardMask}}
Pessoas 9
{{$randomFirstName}}{{$randomLastName}}{{$randomFullName}}{{$randomNamePrefix}}{{$randomNameSuffix}}{{$randomJobTitle}}{{$randomJobArea}}{{$randomJobType}}{{$randomPhoneNumber}}
Internet 12
{{$randomEmail}}{{$randomExampleEmail}}{{$randomUserName}}{{$randomDomainName}}{{$randomDomainWord}}{{$randomUrl}}{{$randomProtocol}}{{$randomIP}}{{$randomIPV6}}{{$randomMACAddress}}{{$randomUserAgent}}{{$randomPassword}}
Lugares 7
{{$randomCity}}{{$randomCountry}}{{$randomCountryCode}}{{$randomStreetName}}{{$randomStreetAddress}}{{$randomLatitude}}{{$randomLongitude}}
Comércio 12
{{$randomCompanyName}}{{$randomCompanySuffix}}{{$randomCatchPhrase}}{{$randomDepartment}}{{$randomProduct}}{{$randomProductName}}{{$randomProductAdjective}}{{$randomProductMaterial}}{{$randomPrice}}{{$randomCurrencyCode}}{{$randomCurrencyName}}{{$randomCurrencySymbol}}
Palavras e cores 10
{{$randomWord}}{{$randomWords}}{{$randomLoremWord}}{{$randomLoremWords}}{{$randomLoremSentence}}{{$randomLoremParagraph}}{{$randomLoremSlug}}{{$randomColor}}{{$randomHexColor}}{{$randomAbbreviation}}
Números 4
{{$randomInt}}{{$randomBoolean}}{{$randomAlphaNumeric}}{{$randomDigits}}
Datas 6
{{$randomDateRecent}}{{$randomDatePast}}{{$randomDateFuture}}{{$today}}{{$tomorrow}}{{$yesterday}}
Nada corresponde a isso.
#Scripts
JavaScript que roda antes de uma requisição ser enviada ou depois que a resposta chega.
Coloque um script numa requisição ou numa pasta. Os scripts de uma pasta envolvem cada requisição dentro dela: os de pré-requisição rodam da pasta mais externa para dentro, os de pós-resposta da mais interna para fora.
| Chamada | O que faz |
|---|---|
carom.get(nome) | Lê uma variável, inclusive as definidas antes na mesma sequência. |
carom.set(nome, valor) | Grava uma variável no ambiente ativo quando o script termina. |
carom.header(chave, valor) | Adiciona um cabeçalho à requisição enviada (só na pré-requisição). |
carom.json() | O corpo da resposta lido como JSON, ou null (pós-resposta). |
carom.request · carom.response | A requisição que está sendo enviada e a resposta que voltou. |
console.log(…) | Escrito na aba Console da resposta. |
// Script de pós-resposta: guarda o token para a próxima requisição
const body = carom.json();
if (body && body.token) carom.set("token", body.token);
O objeto pm do Postman também funciona, pm.test inclusive, então scripts de uma coleção importada rodam sem alteração.
#Lendo uma resposta
- Formatado recolhe e expande o JSON; Bruto é exatamente o que voltou; Prévia renderiza HTML.
- Destacar no corpo encontra um texto e marca todas as ocorrências.
- Cabeçalhos, Cookies e Console (saída dos scripts e resultados de
pm.test) têm abas próprias. - Histórico guarda as últimas 15 respostas de cada requisição. Clique numa para vê-la de novo.
- Copie a resposta, ou salve em arquivo, pelos botões acima do corpo.
- Quando chega uma resposta de uma requisição em outra aba, um aviso conta para você.
Para passar uma requisição a alguém como comando, use Copiar como curl ao lado da barra da URL. Ele sai com as suas variáveis já preenchidas — e com os valores gerados, se o corpo tiver. Copiar URL entrega a URL resolvida.
#Importar e exportar
Importar
Use Importar no fim da barra lateral. O Carom lê exportações do Carom, coleções e ambientes do Postman, Insomnia v4 e v5, OpenAPI / Swagger, arquivos HAR e comandos curl colados. No Postman você escolhe o que trazer e para onde vai, ambientes inclusive. O que não vem junto — uma requisição gRPC do Insomnia, por exemplo — aparece listado antes de você confirmar.
Exportar
Use Exportar para um workspace, uma pasta (com suas subpastas e requisições) ou uma única requisição, no formato do Carom ou em OpenAPI 3.1. Escolha o recorte — ambientes inclusive — e onde salvar.
#Atalhos de teclado
Os padrões. Todos podem ser alterados em Configurações → Geral → Atalhos de teclado.
| Ação | Atalho |
|---|---|
| Buscar em tudo | CtrlK |
| Ir para uma requisição | CtrlP |
| Trocar de workspace | CtrlR |
| Executar um comando | CtrlShiftP |
| Enviar a requisição ativa | CtrlEnter |
| Nova requisição | CtrlN |
| Salvar a requisição ativa | CtrlS |
| Buscar nas abas abertas | CtrlShiftE |
| Fechar a aba ativa | CtrlW |
| Editar ambientes | CtrlE |
| Mostrar ou ocultar a barra lateral | CtrlB |
| Abrir as configurações | Ctrl, |
Nos editores de código
| Tecla | O que faz |
|---|---|
| Tab · ShiftTab | Aumenta e diminui o recuo em dois espaços. |
Digitar { [ ou " | Adiciona o de fechamento e deixa o cursor no meio. No XML, < também fecha. |
| Selecionar e digitar um de abertura | Envolve a seleção em vez de substituí-la. |
| Digitar um de fechamento | Passa por cima de um que já está lá. |
| Backspace entre um par | Apaga os dois. |
| Enter no campo da URL | Envia a requisição. |
#Temas, cores e idioma
- Configurações → Geral: o idioma da interface (English, Português, Español — segue o sistema até você escolher), o idioma dos dados gerados, layout dos painéis, tempo limite, redirecionamentos, se o app desktop pede respostas comprimidas aos servidores e Atalhos de teclado.
- Configurações → Tema: escuro ou claro, cinco paletas prontas (Carom, Midnight, Ember, Forest, Paper) e fontes com tamanho. Mude qualquer cor de uma paleta pronta e ela vira uma cópia sua; Me surpreenda sorteia uma nova.
- No desktop, Configurações → Geral → Atualizações verifica se há versão nova e deixa você escolher se o Carom verifica sozinho ao iniciar.
#Quando algo não está certo
| Sintoma | Por quê, e o que fazer |
|---|---|
| O macOS diz que não consegue verificar o Carom | Esperado: o app não é assinado com certificado pago. Rode xattr -cr /Applications/Carom.app uma vez, ou use Abrir Mesmo Assim em Ajustes do Sistema → Privacidade e Segurança. |
| O Windows diz que protegeu seu PC | É o SmartScreen, pelo mesmo motivo. Mais informações → Executar assim mesmo. |
| Uma requisição falha na versão web mas não no app | O navegador impõe o CORS e não alcança localhost. O app desktop não tem nenhum dos dois limites. |
| Uma variável aparece em vermelho | Ela não está definida na pasta, no ambiente ativo nem no base. Passe o mouse para defini-la, ou confira o seletor de ambiente. |
Instalei pelo .deb ou .rpm e não há botão de atualização | Esses pertencem ao seu gerenciador de pacotes. O Carom leva à página da versão. |
| A pasta guardada diz que mudou no disco | Algo — em geral um git pull — a alterou. Recarregue do disco; o que você editou desde então é o que merece conferência. |
Achou outra coisa? Abra uma issue contando o que fez, o que esperava e o que aconteceu.