← Volver al blog

n8n Respond to Webhook: ejercicio de respuestas JSON predecibles

Practica n8n Respond to Webhook con un ejercicio editorial: define respuestas JSON para éxito, datos no válidos y un fallo de procesamiento controlado.

Una mesa de clasificación mecánica dirige un paquete de papel hacia tres sobres de respuesta.

Comprobado con las fuentes citadas el .

Ejercicio editorial: define tu contrato de respuesta

Este ejercicio de n8n Respond to Webhook te propone crear un endpoint POST con respuestas JSON explícitas para tres resultados. Es una tarea editorial basada en capacidades documentadas; la solución propuesta y los resultados esperados no se han ejecutado ni validado.

Necesitas un entorno n8n accesible, permisos para editar workflows y curl 7.82.0 o posterior, que admite --json para enviar solicitudes POST. Usa datos sintéticos y el webhook de prueba durante el desarrollo. La documentación de n8n facilitada carece en su mayoría de fecha y no está vinculada a una versión concreta, así que comprueba los ajustes en tu instalación.

Usa el siguiente contrato de respuesta editorial. Las entradas deben ser objetos JSON sintácticamente válidos; el JSON mal formado, los fallos de autenticación y los fallos de infraestructura quedan fuera de esta tarea.

Entradas propuestas y respuestas requeridas que debe recibir el cliente
CasoEntrada JSONEstadoRespuesta JSON
Éxito{"name":"Ada"}200{"ok":true,"message":"Hello, Ada"}
Entrada no válida{}400{"ok":false,"error":{"code":"INVALID_INPUT"}}
Fallo controlado{"name":"Ada","simulateFailure":true}500{"ok":false,"error":{"code":"PROCESSING_FAILED"}}

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, Respond to Webhook | Nodes | n8n Docs, JSON - everything curl

Solución sugerida: valida y después procesa

Una puerta de validación y una manivela de procesamiento separan las entradas no válidas de un fallo de procesamiento controlado.
Los objetos distinguen la validación del procesamiento y de su ruta de fallo independiente.

Configura el método del Webhook como POST y su modo de respuesta como Using 'Respond to Webhook' Node. Conéctalo a un nodo Code de JavaScript. La implementación de Webhook facilitada, correspondiente a la rama master cambiante, expone el contenido de la solicitud en body; esto no está garantizado para todas las versiones instaladas, así que inspecciona la salida de tu Webhook antes de usar esa ruta.

En el nodo Code de validación, usa Run Once for All Items y este JavaScript propuesto: const b = $input.first().json.body; const valid = b !== null && typeof b === 'object' && !Array.isArray(b) && typeof b.name === 'string' && b.name.trim().length > 0; return [{ json: { valid, name: valid ? b.name.trim() : '', simulateFailure: valid && b.simulateFailure === true } }];

Añade un nodo IF que compruebe si valid es true. Dirige false a la respuesta de entrada no válida. Dirige true a un nodo Code de procesamiento, también configurado para ejecutarse una vez para todos los elementos, con este JavaScript propuesto: const d = $input.first().json; if (d.simulateFailure) throw new Error('Exercise failure'); return [{ json: { ok: true, message: 'Hello, ' + d.name } }];

Configura el nodo de procesamiento para continuar usando su salida de error independiente, representada como continueErrorOutput en la referencia facilitada. Conecta su salida normal a la respuesta de éxito y su salida de error a la respuesta de fallo. Esto gestiona el fallo de ese nodo, pero no los tiempos de espera agotados de todo el workflow, las caídas fuera de los nodos ni los fallos en otros puntos sin salidas de error conectadas. Creemos que separar la validación del procesamiento facilita razonar sobre el contrato de respuesta.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, n8n/packages/nodes-base/nodes/Webhook/Webhook.node.ts at master · n8n-io/n8n · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.code/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-error-handling-official/references/NODE_ERROR_OUTPUTS.md at main · n8n-io/skills · GitHub

Configura los cuerpos JSON de n8n Respond to Webhook

Tres sobres representan las respuestas JSON de n8n Respond to Webhook para éxito, entrada no válida y fallo controlado.
Cada sobre representa un cuerpo de respuesta y un estado independientes configurados en el ejercicio.

Crea tres nodos terminales n8n Respond to Webhook. En cada uno, selecciona JSON en Respond With y establece Response Code explícitamente según la fila correspondiente del contrato inicial. La tabla siguiente añade los detalles de configuración del cuerpo; la expresión de éxito lee el elemento JSON actual del nodo de procesamiento.

Configuración sugerida del cuerpo para el contrato inicial
Nodo de respuestaConfiguración de Response Body
ÉxitoExpresión: {{ $json }}
Entrada no válidaJSON fijo de la fila de entrada no válida del contrato
Fallo controladoJSON fijo de la fila de fallo controlado del contrato

Mantén fijo el cuerpo de fallo en lugar de exponer los detalles de la excepción. En nuestra opinión, los clientes deben recibir un contrato público de error estable, mientras que el diagnóstico interno debe formar parte del proceso de depuración del equipo.

Sources: Respond to Webhook | Nodes | n8n Docs

Prueba cada resultado que recibe el cliente

Unas manos comparan tres respuestas de webhook con plantillas de resultados esperados durante las pruebas.
Comparar las respuestas con lo esperado representa las comprobaciones manuales que se pide realizar a quienes siguen el ejercicio.

Selecciona Listen for test event antes de enviar una solicitud y vuelve a activar la escucha antes de las solicitudes posteriores cuando sea necesario. En estos comandos propuestos, sustituye TEST_URL por la URL de prueba del nodo. curl --json no valida tu JSON; -i incluye las cabeceras de respuesta junto al cuerpo.

  1. Envía una entrada de éxito: curl -i --json '{"name":"Ada"}' 'TEST_URL'
  2. Envía campos no válidos: curl -i --json '{}' 'TEST_URL'
  3. Envía un fallo controlado: curl -i --json '{"name":"Ada","simulateFailure":true}' 'TEST_URL'

Para cada solicitud, registra el estado HTTP, las cabeceras, el cuerpo JSON y la rama de respuesta ejecutada. Compara los resultados con el contrato de la tarea; inspeccionarlos manualmente no demuestra cobertura automatizada ni la validez del JSON.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md at main · n8n-io/n8n-docs · GitHub, JSON - everything curl, curl - The Art Of Scripting HTTP Requests Using curl

¿n8n Respond to Webhook no funciona? Sigue la rama

Si el cliente recibe algo inesperado, usa esta lista de diagnóstico sugerida. Un workflow que termina sin ejecutar n8n Respond to Webhook devuelve el mensaje estándar de n8n con estado 200; esa respuesta predeterminada incumple el contrato de respuesta explícito de este ejercicio.

El ejercicio se considera completado cuando las tres entradas llegan a los nodos de respuesta previstos y coinciden con los estados y cuerpos requeridos. Como reflexión, explica por qué los campos no válidos y una excepción de procesamiento merecen resultados distintos, y por qué confirmar pronto la recepción de una solicitud no puede garantizar que el procesamiento haya terminado.

Mantén este ejercicio síncrono y breve. n8n Cloud documenta una respuesta 524 cuando un webhook entrante no recibe respuesta en 100 segundos; otras infraestructuras y clientes pueden imponer plazos distintos. Trata ese límite como una frontera, no como un tiempo al que debas acercarte.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-error-handling-official/references/NODE_ERROR_OUTPUTS.md at main · n8n-io/skills · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md at main · n8n-io/n8n-docs · GitHub, Respond to Webhook | Nodes | n8n Docs

Ponlo en práctica

Retos prácticos de n8n

Elige un reto y construye un workflow que funcione en tu propio entorno de n8n, con cinco pistas progresivas por reto.

Prueba un reto práctico

Para tu equipo

Programas de formación en n8n a medida para un equipo o departamento, en tu propia instancia de n8n y con tus herramientas y datos.

Formación para tu equipo

Evaluación de habilidades de n8n

Un cuestionario gratuito de unos 20 minutos, en inglés: 30 preguntas en 10 áreas y un nivel de principiante a experto. En AI Adoption Score, otro proyecto del autor de este sitio.

Descubre tu nivel de n8n