Ir al contenido

Hoppscotch

Ecosistema de desarrollo de APIs de código abierto y alternativa ligera a Postman para probar APIs REST, GraphQL, WebSocket y en tiempo real.

ComandoDescripción
Navegar a hoppscotch.ioAbrir aplicación web de Hoppscotch (sin instalación)
Descargar desde hoppscotch.io/downloadInstalar aplicación de escritorio (macOS, Windows, Linux)
Iniciar sesión con GitHub, Google o emailCrear cuenta para sincronización de equipo
Opción de instalación PWA del navegadorInstalar como Aplicación Web Progresiva
ComandoDescripción
npm install -g @hoppscotch/cliInstalar CLI globalmente con npm
npx @hoppscotch/cliEjecutar CLI sin instalar
hopp --versionMostrar versión del CLI
hopp --helpMostrar ayuda del CLI
ComandoDescripción
docker pull hoppscotch/hoppscotchDescargar imagen Docker
docker compose up -dIniciar instancia auto-alojada
# docker-compose.yml para Hoppscotch auto-alojado
version: "3"
services:
  hoppscotch:
    image: hoppscotch/hoppscotch:latest
    ports:
      - "3000:3000"   # Interfaz web
      - "3100:3100"   # Panel de administración
      - "3170:3170"   # API del backend
    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:
ComandoDescripción
Seleccionar método (GET, POST, PUT, DELETE, PATCH)Elegir método HTTP del menú desplegable
Ingresar URL en la barra de direccionesEstablecer endpoint de la solicitud
Hacer clic en “Send”Ejecutar la solicitud
Ctrl + EnterEnviar solicitud (atajo de teclado)
Ctrl + GEnviar y descargar respuesta
Ctrl + KAbrir paleta de comandos
ComandoDescripción
Clic en pestaña “Body” → seleccionar tipoEstablecer formato del cuerpo de solicitud
Seleccionar “application/json”Cuerpo JSON (más común)
Seleccionar “multipart/form-data”Carga de archivos
Seleccionar “application/x-www-form-urlencoded”Datos de formulario
Seleccionar “text/plain”Cuerpo de texto sin formato
Seleccionar “application/xml”Cuerpo XML
Seleccionar “Binary”Datos binarios sin procesar
ComandoDescripción
Clic en pestaña “Headers” → Agregar cabeceraAgregar cabeceras de solicitud personalizadas
Clic en pestaña “Parameters”Agregar parámetros de consulta URL
Modo de edición masiva para cabecerasPegar múltiples cabeceras a la vez
Alternar cabecera activa/inactivaDesactivar sin eliminar
Usar <<variable>> en valoresReferenciar variables de entorno
ComandoDescripción
Ver cuerpo de respuestaJSON, HTML, XML, binario, imagen
Clic en pestaña “Headers” de la respuestaInspeccionar cabeceras de respuesta
Código de estado y tiempo mostradosEstado HTTP, latencia, tamaño
Clic en “Copy” en la respuestaCopiar respuesta al portapapeles
Clic en “Download”Descargar respuesta como archivo
Respuesta JSON auto-formateadaVista de árbol colapsable
Clic en “Timeline”Ver línea de tiempo solicitud/respuesta
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"
}
ComandoDescripción
Clic en ”+” en panel de ColeccionesCrear nueva colección
Clic derecho en colección → “New Request”Agregar solicitud a la colección
Clic derecho en colección → “New Folder”Organizar con subcarpetas
Arrastrar solicitudes entre carpetasReordenar elementos de la colección
Clic derecho → “Duplicate”Clonar una colección
Clic derecho → “Properties”Editar configuración de la colección
Clic derecho → “Delete”Eliminar colección
Ctrl + Shift + PBuscar dentro de colecciones
ComandoDescripción
Clic en “Import” → seleccionar archivoImportar colección
Clic derecho → “Export”Exportar colección como JSON
Importar desde Postman Collection v2Compatibilidad con Postman
Importar desde especificación OpenAPI/SwaggerAuto-generar solicitudes
Importar desde InsomniaCompatibilidad con Insomnia
Importar desde cURLPegar comando cURL
Importar desde HARImportar HTTP Archive
Formatos de importación soportados:
  - Hoppscotch Collection (JSON nativo)
  - Postman Collection v2
  - OpenAPI 3.0 / Swagger 2.0
  - Insomnia v4
  - Comandos cURL
  - HAR (HTTP Archive)

Importar desde cURL:
  Pegar un comando cURL directamente en la barra de URL
  Hoppscotch auto-analiza método, cabeceras, cuerpo y URL
ComandoDescripción
Clic en “Environments” en la barra lateralAbrir gestor de entornos
Clic en ”+” para crear entornoCrear nuevo entorno
Agregar pares clave: valorDefinir variables
Usar <<nombre_variable>> en solicitudesReferenciar variable en cualquier campo
Seleccionar entorno del menú desplegableActivar un entorno
Clic en pestaña “Global”Establecer variables globales (siempre activas)
Clic derecho → “Export”Exportar entorno como JSON
Clic derecho → “Duplicate”Clonar entorno
TipoDescripción
Variable regularVisible en la UI, exportada en colecciones
Variable secretaOculta en la UI, no exportada
Variable globalDisponible en todos los entornos
Variable de entornoDisponible solo cuando el entorno está activo
Entorno: "Production"
┌───────────────┬──────────────────────────────┬──────────┐
│ Clave         │ Valor                        │ Tipo     │
├───────────────┼──────────────────────────────┼──────────┤
│ base_url      │ https://api.example.com      │ Regular  │
│ api_version   │ v2                           │ Regular  │
│ auth_token    │ eyJhbGciOiJIUzI1NiIsIn...    │ Secreto  │
│ timeout       │ 30000                        │ Regular  │
└───────────────┴──────────────────────────────┴──────────┘

Uso en solicitudes:
  URL:    <<base_url>>/<<api_version>>/users
  Header: Authorization: Bearer <<auth_token>>
ComandoDescripción
Seleccionar “Bearer Token”Agregar autenticación con token Bearer
Seleccionar “Basic Auth”Autenticación con usuario/contraseña
Seleccionar “OAuth 2.0”Configurar flujo OAuth 2.0
Seleccionar “API Key”Agregar API key a cabecera o parámetro de consulta
Seleccionar “AWS Signature”Autenticación AWS Signature V4
Seleccionar “Inherit from parent”Heredar autenticación de la colección
Seleccionar “None”Eliminar autenticación
Campos de token soportan <<variables>>Usar variables de entorno en tokens de autenticación
Configuración OAuth 2.0:
  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-configurado

Tipos de grant soportados:
  - Authorization Code (+ PKCE)
  - Client Credentials
  - Implicit
  - Password Credentials
ComandoDescripción
Clic en “Realtime” → “WebSocket”Abrir cliente WebSocket
Ingresar URL wss://Establecer endpoint WebSocket
Clic en “Connect”Establecer conexión
Escribir mensaje → clic en “Send”Enviar mensaje al servidor
Ver mensajes en panel de registroMonitorear entrantes/salientes
Clic en “Disconnect”Cerrar conexión
Agregar protocolos/cabecerasConfigurar parámetros de conexión
ComandoDescripción
Clic en “Realtime” → “SSE”Probar Server-Sent Events
Ingresar URL del endpoint SSEEstablecer URL del flujo de eventos
Clic en “Connect”Comenzar a recibir eventos
Eventos registrados en tiempo realMonitorear flujo de eventos
Clic en “Disconnect”Dejar de recibir
ComandoDescripción
Clic en “Realtime” → “MQTT”Probar conexiones MQTT
Ingresar URL mqtt:// o wss://Establecer URL del broker MQTT
Establecer Client ID, usuario, contraseñaConfigurar credenciales
Suscribirse a temasEscuchar mensajes
Publicar en temasEnviar mensajes
ComandoDescripción
Clic en “Realtime” → “Socket.IO”Probar conexiones Socket.IO
Ingresar URL del servidorEstablecer endpoint Socket.IO
Escuchar en eventosSuscribirse a eventos nombrados
Emitir eventos con datosEnviar eventos nombrados
Ver estado de conexiónMonitorear conexión/desconexión
ComandoDescripción
Clic en pestaña “GraphQL”Cambiar a modo GraphQL
Ingresar URL del endpoint GraphQLEstablecer URL del servidor GraphQL
Escribir consulta en panel del editorComponer consulta GraphQL
Clic en “Schema” para obtener esquemaCargar esquema del servidor para autocompletado
Agregar variables en panel de VariablesEstablecer variables de consulta como JSON
Agregar cabeceras para autenticaciónEstablecer cabeceras de autenticación
Clic en “Run” o Ctrl + EnterEjecutar consulta
Usar autocompletado del esquemaObtener sugerencias 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>>
ComandoDescripción
hopp test collection.jsonEjecutar pruebas de colección
hopp test collection.json -e environment.jsonEjecutar con entorno
hopp test collection.json --delay 500Retraso entre solicitudes (ms)
hopp test collection.json --reporter junitSalida de informe de pruebas JUnit
hopp test collection.json --reporter jsonSalida de informe de pruebas JSON
hopp test collection.json --bailDetenerse en el primer fallo
hopp test collection.json --env-var KEY=VALUESobrescribir variable de entorno
# Ejecutar colección con entorno
hopp test api-tests.json -e production.json

# Ejecutar con retraso y detenerse en fallo
hopp test api-tests.json --delay 1000 --bail

# Generar informe JUnit para CI/CD
hopp test api-tests.json --reporter junit > results.xml

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

# Ejemplo de pipeline CI/CD
hopp test api-tests.json -e staging.json --bail --reporter junit
ComandoDescripción
Clic en pestaña “Pre-request”Agregar script que se ejecuta antes de la solicitud
Clic en pestaña “Tests”Agregar script que se ejecuta después de la respuesta
pw.env.set("key", "value")Establecer variable de entorno
pw.env.get("key")Obtener variable de entorno
pw.expect(response.status).toBe(200)Verificar código de estado
pw.expect(response.body).toHaveProperty("id")Verificar propiedad del cuerpo
// Pre-solicitud: Generar marca de tiempo
pw.env.set("timestamp", Date.now().toString());

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

// Prueba: Verificar código de estado
pw.test("Status is 200", () => {
  pw.expect(pw.response.status).toBe(200);
});

// Prueba: Verificar cuerpo de respuesta
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");
});

// Prueba: Verificar tiempo de respuesta
pw.test("Response is fast", () => {
  pw.expect(pw.response.status).toBeLessThan(500);
});

// Prueba: Guardar token para la siguiente solicitud
pw.test("Extract auth token", () => {
  const token = pw.response.body.access_token;
  pw.env.set("auth_token", token);
});
AtajoDescripción
Ctrl + EnterEnviar solicitud
Ctrl + KPaleta de comandos
Ctrl + SGuardar solicitud actual
Ctrl + Shift + PBuscar en colecciones
Ctrl + /Alternar barra lateral
Alt + ↑Solicitud anterior en el historial
Alt + ↓Siguiente solicitud en el historial
F11Alternar pantalla completa
ComandoDescripción
Crear equipo desde la barra lateralConfigurar espacio de trabajo del equipo
Invitar miembros por emailAgregar colaboradores
Colecciones compartidasBibliotecas de solicitudes del equipo
Entornos compartidosConjuntos de variables del equipo
Colaboración en tiempo realVer ediciones del equipo en vivo
Acceso basado en rolesRoles de propietario, editor y visor
  1. Organiza colecciones por dominio de API — Agrupa endpoints relacionados en colecciones y usa carpetas para tipos de recursos (usuarios, pedidos, productos) para mantener todo fácil de encontrar.

  2. Usa entornos para staging vs producción — Crea entornos separados para dev, staging y producción con los mismos nombres de variables pero valores diferentes. Cambia con un solo clic.

  3. Almacena secretos como variables secretas — Marca API keys y tokens como tipo “secret” para que estén ocultos en la UI y excluidos de las exportaciones.

  4. Usa scripts pre-solicitud para autenticación — Genera marcas de tiempo, calcula firmas o refresca tokens automáticamente antes de cada solicitud en lugar de copiarlos manualmente.

  5. Escribe pruebas para endpoints críticos — Agrega scripts de prueba para verificar códigos de estado, estructura de respuesta y valores clave. Ejecútalos vía CLI en pipelines CI/CD.

  6. Importa desde especificaciones OpenAPI — Al trabajar con APIs documentadas, importa la especificación OpenAPI/Swagger para auto-generar todos los endpoints con los parámetros correctos.

  7. Usa autenticación a nivel de colección — Establece la autenticación a nivel de colección y usa “Inherit from parent” en solicitudes individuales para evitar duplicar la configuración de autenticación.

  8. Exporta colecciones al control de versiones — Exporta colecciones como JSON y haz commit en tu repositorio para versionado y compartir con el equipo.

  9. Usa el CLI en CI/CD — Agrega hopp test a tu pipeline para ejecutar pruebas de API en cada despliegue, asegurando que los endpoints funcionen antes de salir a producción.

  10. Auto-aloja para APIs sensibles — Si pruebas APIs internas o sensibles, despliega la versión Docker auto-alojada para mantener todos los datos dentro de tu infraestructura.