
resterm v1.5.6
Cliente de API de terminal para HTTP, GraphQL e gRPC. Arquivos .http simples que você pode fazer diff e versionar, com workflows, mocks, profiling, tracing, importação de OpenAPI, túneis SSH, port-forwards do Kubernetes, WebSocket, SSE e um runner de CLI.
Resterm
Um workbench de API-as-code para o terminal.
Visualização de trace e timeline
Resterm é um cliente de API que armazena requisições em arquivos .http e .rest simples, que podem ficar lado a lado no seu repositório como o resto do seu código. Você pode usar a interface de terminal, ou executar os mesmos arquivos em CI com resterm run.
Links rápidos: Screenshots, Instalação, Início rápido, Arquivos de requisição, Documentação.
Screenshots
Veja a interface em ação (clique para expandir)
Workflows
Profiler
Explain
RestermScript
Por que Resterm
- Suporte a HTTP, GraphQL, gRPC, WebSocket e SSE.
- Automação em arquivos de requisição: condições (
@when,@if/@elif/@else,@for-each), workflows de múltiplos passos (@workflow/@step), capturas, variáveis e asserções (@capture,@var,@assert). - Túneis no arquivo de requisição:
@sshe@k8sroteiam uma requisição através de um bastion SSH ou de um port-forward do Kubernetes que o Resterm abre e fecha para você, com perfis por arquivo ou workspace. - Grave tráfego HTTP e exporte-o para arquivos
.httpdo Resterm como requisições ou respostas mock. - RestermScript, uma pequena linguagem de expressão criada para o Resterm, com hooks JavaScript quando você quiser.
- Controles estilo Vim com dicas de atalhos, ajuda offline pesquisável,
Shift+kpara ajuda sob o cursor,/para busca e comandos como:w,:q,:helpe:docs. - Autenticação: OAuth 2.0 (client credentials, password, authorization code com PKCE) e
@auth commandpara reutilizar tokens de CLIs que você já tem instaladas, comogh auth token. - Executor CLI:
resterm runpara execuções scriptadas e CI, com saída JSON e JUnit. - Servidores mock declarados ao lado das requisições que eles imitam, com regras de correspondência, sequências, verificação de chamadas e hot reload.
- Rastreamento de timeline, profiling e comparação de execuções entre ambientes.
- Transcrições de streaming e um console interativo para WebSocket e SSE.
- Sem integração com IA
Instalação
macOS e Linux:
brew install resterm
# or
curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash
Windows:
iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iex
A partir do código-fonte, com Go 1.25 ou mais recente:
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
[!IMPORTANT] Binários Linux pré-compilados dependem de glibc 2.32 ou mais recente. Em uma distribuição mais antiga, compile a partir do código-fonte com um toolchain glibc mais recente ou atualize o glibc antes de usar os arquivos de release.
Instalações via Homebrew são atualizadas com brew upgrade resterm. Binários da página de releases ou dos scripts de instalação usam resterm --check-update e resterm --update, que baixa, verifica e instala no local. No Windows, o binário antigo permanece ao lado do novo como resterm.exe.old e é removido na próxima atualização.
Instalação manual
Binários para macOS, Linux e Windows (amd64 e arm64) estão na página de releases. Os comandos abaixo fazem o mesmo que baixar manualmente da página de release. A versão Unix precisa de curl e jq.
# Find the latest release tag
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/unkn0wn-root/resterm/releases/latest | jq -r .tag_name)
# Download the matching binary (Darwin/Linux + amd64/arm64)
curl -fL -o resterm "https://github.com/unkn0wn-root/resterm/releases/download/${LATEST_TAG}/resterm_$(uname -s)_$(uname -m)"
# Install on PATH
chmod +x resterm
sudo install -m 0755 resterm /usr/local/bin/resterm
$latest = Invoke-RestMethod https://api.github.com/repos/unkn0wn-root/resterm/releases/latest
$asset = $latest.assets | Where-Object { $_.name -like 'resterm_Windows_*' } | Select-Object -First 1
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile resterm.exe
# Optionally move to a directory on PATH:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"
Início rápido
mkdir my-api && cd my-api
resterm init
resterm
resterm init cria um pequeno projeto que você pode começar a usar imediatamente. O requests.http gerado tem cenários mock locais e algumas requisições que se baseiam umas nas outras, cobrindo asserções, autenticação bearer, correspondência JSON, json-rules e @for-each. Pressione g Shift+m para iniciar o servidor mock, depois Ctrl+Enter para enviar a requisição sob o cursor.
Você também pode abrir o Resterm diretamente sem init. Execute resterm, digite uma URL e pressione Ctrl+Enter. Você também pode colar um comando curl - isso também funciona.
O mesmo arquivo é executado sem a TUI:
resterm run --request CreateUser requests.http
Arquivos de requisição
O Resterm suporta a sintaxe HTTP padrão, mas vai muito além disso com diretivas # @ para configuração e automação:
# @setting base-url https://api.example.com/v1/
### Create users
// Send this request once for each name in the list.
# @for-each ["david", "tom"] as name
# @when env.mode == "development"
# @assert response.statusCode == 201
POST users
Content-Type: application/json
{"name":"{{= name }}"}
Colocar @setting antes da primeira requisição aplica-se ao arquivo inteiro. ### inicia uma nova requisição, e as diretivas podem repetir, limitar ou verificar a requisição abaixo delas. Mais em _examples/ e na referência de diretivas.
Servidores mock
Respostas mock são definidas nos mesmos arquivos que as requisições (mas não precisam ser). Exemplo, dois cenários em uma rota:
### Payment accepted
# @mock method=POST path=/payments name=accepted default=true latency=150ms
HTTP/1.1 202 Accepted
Content-Type: application/json
{"id":"pay_123","status":"pending"}
### Payment declined
# @mock method=POST path=/payments name=declined
# @match query={"mode":"decline"} headers={"X-Tenant":"demo"} json={"amount":0}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
{"error":"amount must be positive"}
Sirva um arquivo ou um diretório inteiro:
resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests
Correspondência em query, headers e body, sequências de resposta para testes de polling, verificação de chamadas e hot reload são abordados na referência do servidor mock. Exemplo funcional: _examples/mocks.http.
Gravando tráfego
Você pode rotear sua aplicação através do proxy do Resterm e ele captura o tráfego em um arquivo .http do Resterm, como requisições, mocks ou ambos.
resterm record --upstream https://api.example.com --out captured.http --mode both
Aponte a URL base da API da sua aplicação para http://127.0.0.1:9000, depois pare a gravação com Ctrl+C. A TUI faz a mesma coisa com :record start --upstream <origin>, além de :record as-request e :record as-mock para inserir capturas no arquivo aberto.
Mais na referência de gravação.
Mais
| Área | Docs |
|---|---|
| Automação | workflows, polling e retries, comparar execuções, timeline e tracing, profiling |
| Transportes | gRPC, GraphQL, WebSocket e SSE |
| Autenticação e conectividade | OAuth 2.0, auth da sua própria CLI, túneis SSH, port-forwards do Kubernetes |
| Scripting | RestermScript, hooks JavaScript, API Go headless, resterm-runner |
| Entrada e saída | importação curl, importação OpenAPI, compartilhamento de coleções, histórico de respostas e diffing |
| Configuração | ambientes e variáveis, configuração, temas, atalhos de teclado |
Teclas
Pressione ? para a ajuda geral do Resterm e Shift+k para ajuda sobre o que estiver sob o cursor. A tabela completa está no tour da UI. Para começar rapidamente, você só precisa de:
Ctrl+Enterenvia a requisiçãoTab/Shift+Tabalterna entre painéisg psalta para a resposta
Documentação
docs/resterm.mdcobre sintaxe de requisição, diretivas, scripting e transportes.docs/cli.mdcobreresterm run, importadores, coleções e histórico.docs/restermscript.mdé a referência do RestermScript.- Compatibilidade lista o que permanece estável até a v1.
Dentro da TUI, :help <topic> abre o manual embutido e :docs <topic> abre a cópia web para a release instalada.