Pular para o conteúdo

Hoppscotch

Ecossistema de desenvolvimento de API de código aberto e alternativa leve ao Postman para testar APIs REST, GraphQL, WebSocket e em tempo real.

ComandoDescrição
Navegar para hoppscotch.ioAbrir aplicação web Hoppscotch (sem instalação)
Baixar de hoppscotch.io/downloadInstalar aplicação desktop (macOS, Windows, Linux)
Entrar com GitHub, Google ou emailCriar conta para sincronização de equipe
Opção de instalação PWA do navegadorInstalar como Progressive Web App
ComandoDescrição
npm install -g @hoppscotch/cliInstalar CLI globalmente com npm
npx @hoppscotch/cliExecutar CLI sem instalar
hopp --versionMostrar versão do CLI
hopp --helpMostrar ajuda do CLI
ComandoDescrição
docker pull hoppscotch/hoppscotchBaixar imagem Docker
docker compose up -dIniciar instância self-hosted
# docker-compose.yml para Hoppscotch self-hosted
version: "3"
services:
  hoppscotch:
    image: hoppscotch/hoppscotch:latest
    ports:
      - "3000:3000"   # Web UI
      - "3100:3100"   # Admin dashboard
      - "3170:3170"   # Backend API
    environment:
      DATABASE_URL: postgresql://user:pass@db:5432/hoppscotch
      JWT_SECRET: your-jwt-secret-here
      TOKEN_SALT_COMPLEXITY: 10
      MAGIC_LINK_TOKEN_VALIDITY: 3
      REFRESH_TOKEN_VALIDITY: 604800000
      ACCESS_TOKEN_VALIDITY: 86400000
      VITE_ALLOWED_AUTH_PROVIDERS: GITHUB,GOOGLE,EMAIL
    depends_on:
      - db

  db:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: hoppscotch

volumes:
  postgres_data:
ComandoDescrição
Selecionar método (GET, POST, PUT, DELETE, PATCH)Escolher método HTTP no dropdown
Inserir URL na barra de endereçoDefinir endpoint da requisição
Clicar “Send”Executar a requisição
Ctrl + EnterEnviar requisição (atalho de teclado)
Ctrl + GEnviar e baixar resposta
Ctrl + KAbrir paleta de comandos
ComandoDescrição
Clicar aba “Body” → selecionar tipoDefinir formato do corpo da requisição
Selecionar “application/json”Corpo JSON (mais comum)
Selecionar “multipart/form-data”Upload de arquivos
Selecionar “application/x-www-form-urlencoded”Dados de formulário
Selecionar “text/plain”Corpo texto simples
Selecionar “application/xml”Corpo XML
Selecionar “Binary”Dados binários brutos
ComandoDescrição
Clicar aba “Headers” → Adicionar cabeçalhoAdicionar cabeçalhos personalizados
Clicar aba “Parameters”Adicionar parâmetros de consulta URL
Modo de edição em massa para cabeçalhosColar múltiplos cabeçalhos de uma vez
Alternar cabeçalho ativo/inativoDesativar sem excluir
Usar <<variable>> nos valoresReferenciar variáveis de ambiente
ComandoDescrição
Ver corpo da respostaJSON, HTML, XML, binário, imagem
Clicar aba “Headers” na respostaInspecionar cabeçalhos da resposta
Código de status e tempo exibidosStatus HTTP, latência, tamanho
Clicar “Copy” na respostaCopiar resposta para área de transferência
Clicar “Download”Baixar resposta como arquivo
Resposta JSON auto-formatadaVisualização em árvore retrátil
Clicar “Timeline”Ver linha do tempo requisição/resposta
Method:  POST
URL:     https://api.example.com/users
Headers:
  Content-Type: application/json
  Authorization: Bearer <<auth_token>>

Body (JSON):
{
  "name": "Alice Smith",
  "email": "alice@example.com",
  "role": "admin"
}

Response: 201 Created (145ms, 234 B)
{
  "id": 42,
  "name": "Alice Smith",
  "email": "alice@example.com",
  "role": "admin",
  "created_at": "2024-01-15T10:30:00Z"
}
ComandoDescrição
Clicar ”+” no painel de ColeçõesCriar nova coleção
Clicar direito na coleção → “New Request”Adicionar requisição à coleção
Clicar direito na coleção → “New Folder”Organizar com subpastas
Arrastar requisições entre pastasReordenar itens da coleção
Clicar direito → “Duplicate”Clonar uma coleção
Clicar direito → “Properties”Editar configurações da coleção
Clicar direito → “Delete”Remover coleção
Ctrl + Shift + PPesquisar dentro de coleções
ComandoDescrição
Clicar “Import” → selecionar arquivoImportar coleção
Clicar direito → “Export”Exportar coleção como JSON
Importar de Postman Collection v2Compatibilidade com Postman
Importar de especificação OpenAPI/SwaggerGerar requisições automaticamente
Importar de InsomniaCompatibilidade com Insomnia
Importar de cURLColar comando cURL
Importar de HARImportar HTTP Archive
Supported import formats:
  - Hoppscotch Collection (native JSON)
  - Postman Collection v2
  - OpenAPI 3.0 / Swagger 2.0
  - Insomnia v4
  - cURL commands
  - HAR (HTTP Archive)

Import from cURL:
  Paste a cURL command directly into the URL bar
  Hoppscotch auto-parses method, headers, body, and URL
ComandoDescrição
Clicar “Environments” na barra lateralAbrir gerenciador de ambientes
Clicar ”+” para criar ambienteCriar novo ambiente
Adicionar pares key: valueDefinir variáveis
Usar <<variable_name>> nas requisiçõesReferenciar variável em qualquer campo
Selecionar ambiente no dropdownAtivar um ambiente
Clicar aba “Global”Definir variáveis globais (sempre ativas)
Clicar direito → “Export”Exportar ambiente como JSON
Clicar direito → “Duplicate”Clonar ambiente
TipoDescrição
Variável regularVisível na UI, exportada nas coleções
Variável secretaMascarada na UI, não exportada
Variável globalDisponível em todos os ambientes
Variável de ambienteDisponível apenas quando o ambiente está ativo
Environment: "Production"
┌───────────────┬──────────────────────────────┬──────────┐
│ Key           │ Value                        │ Type     │
├───────────────┼──────────────────────────────┼──────────┤
│ base_url      │ https://api.example.com      │ Regular  │
│ api_version   │ v2                           │ Regular  │
│ auth_token    │ eyJhbGciOiJIUzI1NiIsIn...    │ Secret   │
│ timeout       │ 30000                        │ Regular  │
└───────────────┴──────────────────────────────┴──────────┘

Usage in requests:
  URL:    <<base_url>>/<<api_version>>/users
  Header: Authorization: Bearer <<auth_token>>
ComandoDescrição
Selecionar “Bearer Token”Adicionar autenticação Bearer token
Selecionar “Basic Auth”Autenticação usuário/senha
Selecionar “OAuth 2.0”Configurar fluxo OAuth 2.0
Selecionar “API Key”Adicionar API key ao cabeçalho ou parâmetro
Selecionar “AWS Signature”Autenticação AWS Signature V4
Selecionar “Inherit from parent”Herdar autenticação da coleção
Selecionar “None”Remover autenticação
Campos de token suportam <<variables>>Usar variáveis de ambiente em tokens
OAuth 2.0 Configuration:
  Grant Type:       Authorization Code
  Auth URL:         https://auth.example.com/authorize
  Token URL:        https://auth.example.com/token
  Client ID:        <<client_id>>
  Client Secret:    <<client_secret>>
  Scope:            read write
  Redirect URI:     Auto-configured

Supported grant types:
  - Authorization Code (+ PKCE)
  - Client Credentials
  - Implicit
  - Password Credentials
ComandoDescrição
Clicar “Realtime” → “WebSocket”Abrir cliente WebSocket
Inserir URL wss://Definir endpoint WebSocket
Clicar “Connect”Estabelecer conexão
Digitar mensagem → clicar “Send”Enviar mensagem ao servidor
Ver mensagens no painel de logMonitorar entrada/saída
Clicar “Disconnect”Fechar conexão
Adicionar protocolos/cabeçalhosConfigurar parâmetros de conexão
ComandoDescrição
Clicar “Realtime” → “SSE”Testar Server-Sent Events
Inserir URL do endpoint SSEDefinir URL do fluxo de eventos
Clicar “Connect”Começar a receber eventos
Eventos registrados em tempo realMonitorar fluxo de eventos
Clicar “Disconnect”Parar de receber
ComandoDescrição
Clicar “Realtime” → “MQTT”Testar conexões MQTT
Inserir URL mqtt:// ou wss://Definir URL do broker MQTT
Definir Client ID, usuário, senhaConfigurar credenciais
Assinar tópicosOuvir mensagens
Publicar em tópicosEnviar mensagens
ComandoDescrição
Clicar “Realtime” → “Socket.IO”Testar conexões Socket.IO
Inserir URL do servidorDefinir endpoint Socket.IO
Ouvir eventosAssinar eventos nomeados
Emitir eventos com dadosEnviar eventos nomeados
Ver status da conexãoMonitorar conexão/desconexão
ComandoDescrição
Clicar aba “GraphQL”Mudar para modo GraphQL
Inserir URL do endpoint GraphQLDefinir URL do servidor GraphQL
Escrever query no painel editorCompor consulta GraphQL
Clicar “Schema” para buscar esquemaCarregar esquema do servidor para autocomplete
Adicionar variáveis no painel VariablesDefinir variáveis de consulta como JSON
Adicionar cabeçalhos para autenticaçãoDefinir cabeçalhos de autenticação
Clicar “Run” ou Ctrl + EnterExecutar consulta
Usar autocomplete do esquemaObter sugestões de campos
Endpoint: https://api.example.com/graphql

Query:
  query GetUsers($limit: Int!) {
    users(limit: $limit) {
      id
      name
      email
      posts {
        title
        createdAt
      }
    }
  }

Variables:
  {
    "limit": 10
  }

Headers:
  Authorization: Bearer <<auth_token>>
ComandoDescrição
hopp test collection.jsonExecutar testes da coleção
hopp test collection.json -e environment.jsonExecutar com ambiente
hopp test collection.json --delay 500Atraso entre requisições (ms)
hopp test collection.json --reporter junitSaída de relatório de teste JUnit
hopp test collection.json --reporter jsonSaída de relatório de teste JSON
hopp test collection.json --bailParar na primeira falha
hopp test collection.json --env-var KEY=VALUESobrescrever variável de ambiente
# Run collection with environment
hopp test api-tests.json -e production.json

# Run with delay and stop on failure
hopp test api-tests.json --delay 1000 --bail

# Generate JUnit report for CI/CD
hopp test api-tests.json --reporter junit > results.xml

# Override specific variables
hopp test api-tests.json \
  --env-var "base_url=https://staging.example.com" \
  --env-var "auth_token=test-token-123"

# CI/CD pipeline example
hopp test api-tests.json -e staging.json --bail --reporter junit
ComandoDescrição
Clicar aba “Pre-request”Adicionar script executado antes da requisição
Clicar aba “Tests”Adicionar script executado após a resposta
pw.env.set("key", "value")Definir variável de ambiente
pw.env.get("key")Obter variável de ambiente
pw.expect(response.status).toBe(200)Verificar código de status
pw.expect(response.body).toHaveProperty("id")Verificar propriedade do corpo
// Pre-request: Generate timestamp
pw.env.set("timestamp", Date.now().toString());

// Pre-request: Generate random ID
pw.env.set("random_id", Math.random().toString(36).slice(2));

// Test: Check status code
pw.test("Status is 200", () => {
  pw.expect(pw.response.status).toBe(200);
});

// Test: Check response body
pw.test("Response has user data", () => {
  const body = pw.response.body;
  pw.expect(body).toHaveProperty("id");
  pw.expect(body).toHaveProperty("name");
  pw.expect(body.name).toBe("Alice");
});

// Test: Check response time
pw.test("Response is fast", () => {
  pw.expect(pw.response.status).toBeLessThan(500);
});

// Test: Save token for next request
pw.test("Extract auth token", () => {
  const token = pw.response.body.access_token;
  pw.env.set("auth_token", token);
});
AtalhoDescrição
Ctrl + EnterEnviar requisição
Ctrl + KPaleta de comandos
Ctrl + SSalvar requisição atual
Ctrl + Shift + PPesquisar coleções
Ctrl + /Alternar barra lateral
Alt + ↑Requisição anterior no histórico
Alt + ↓Próxima requisição no histórico
F11Alternar tela cheia
ComandoDescrição
Criar equipe na barra lateralConfigurar espaço de trabalho da equipe
Convidar membros por emailAdicionar colaboradores
Coleções compartilhadasBibliotecas de requisições da equipe
Ambientes compartilhadosConjuntos de variáveis da equipe
Colaboração em tempo realVer edições da equipe ao vivo
Controle de acesso baseado em papéisPapéis de proprietário, editor, visualizador
  1. Organizar coleções por domínio de API — Agrupe endpoints relacionados em coleções e use pastas para tipos de recursos (users, orders, products) para manter tudo fácil de encontrar.

  2. Usar ambientes para staging vs produção — Crie ambientes separados para dev, staging e produção com os mesmos nomes de variáveis mas valores diferentes. Troque com um clique.

  3. Armazenar segredos como variáveis secretas — Marque API keys e tokens como tipo “secret” para que fiquem mascarados na UI e excluídos das exportações.

  4. Usar scripts pré-requisição para autenticação — Gere timestamps, calcule assinaturas ou renove tokens automaticamente antes de cada requisição ao invés de copiá-los manualmente.

  5. Escrever testes para endpoints críticos — Adicione scripts de teste para verificar códigos de status, estrutura de resposta e valores chave. Execute via CLI em pipelines CI/CD.

  6. Importar de especificações OpenAPI — Ao trabalhar com APIs documentadas, importe a especificação OpenAPI/Swagger para gerar automaticamente todos os endpoints com parâmetros corretos.

  7. Usar autenticação no nível da coleção — Configure autenticação no nível da coleção e use “Inherit from parent” nas requisições individuais para evitar duplicar a configuração de autenticação.

  8. Exportar coleções para controle de versão — Exporte coleções como JSON e faça commit no repositório para versionamento e compartilhamento com a equipe.

  9. Usar o CLI em CI/CD — Adicione hopp test ao seu pipeline para executar testes de API em cada implantação, garantindo que os endpoints funcionem antes de ir ao ar.

  10. Self-host para APIs sensíveis — Se testando APIs internas ou sensíveis, implante a versão Docker self-hosted para manter todos os dados dentro da sua infraestrutura.