n8n Respond to Webhook: вправа з передбачуваних JSON-відповідей
Практикуйте n8n Respond to Webhook у редакційній вправі: визначте JSON-відповіді для успіху, некоректних даних і обробленого збою.

Перевірено за наведеними джерелами .
Редакційна вправа: визначте контракт відповіді
У цій вправі з n8n Respond to Webhook вам потрібно створити POST-ендпоінт із явно заданими JSON-відповідями для трьох результатів. Це редакційне завдання на основі задокументованих можливостей; запропоноване рішення та очікувані результати не запускали й не перевіряли.
Вам потрібні доступне середовище n8n, права на редагування робочих процесів і curl версії 7.82.0 або новішої, яка підтримує --json для надсилання POST-запитів. Під час розробки використовуйте синтетичні дані й тестовий вебхук. Надана документація n8n переважно не має дат і не прив’язана до конкретного релізу, тому звіряйте налаштування зі своєю інсталяцією.
Використовуйте наведений нижче редакційний контракт відповіді. Вхідні дані мають бути синтаксично коректними JSON-об’єктами; некоректний синтаксис JSON, помилки автентифікації та інфраструктурні збої виходять за межі цього завдання.
| Випадок | Вхідний JSON | Статус | JSON-відповідь |
|---|---|---|---|
| Успіх | {"name":"Ada"} | 200 | {"ok":true,"message":"Hello, Ada"} |
| Некоректні вхідні дані | {} | 400 | {"ok":false,"error":{"code":"INVALID_INPUT"}} |
| Оброблений збій | {"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
Запропоноване рішення: спочатку перевірка, потім обробка

У вузлі Webhook установіть метод POST і режим відповіді Using 'Respond to Webhook' Node. Під’єднайте його до вузла Code з JavaScript. Надана реалізація Webhook із рухомої гілки master розміщує тіло запиту в body; це не гарантія для кожного встановленого релізу, тому перевірте вихідні дані Webhook, перш ніж використовувати цей шлях.
Для вузла Code, що перевіряє дані, виберіть Run Once for All Items і використайте запропонований JavaScript: 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 } }];
Додайте вузол IF, який перевіряє, чи valid дорівнює true. Спрямуйте false до відповіді для некоректних вхідних даних. Спрямуйте true до вузла Code для обробки, також у режимі одноразового виконання для всіх елементів, із таким запропонованим JavaScript: const d = $input.first().json; if (d.simulateFailure) throw new Error('Exercise failure'); return [{ json: { ok: true, message: 'Hello, ' + d.name } }];
Налаштуйте вузол обробки так, щоб після помилки він продовжував виконання через окремий вихід помилок, позначений як continueErrorOutput у наданому довідковому матеріалі. З’єднайте звичайний вихід із відповіддю про успіх, а вихід помилок — із відповіддю про збій. Це обробляє збій саме цього вузла, але не перевищення часу виконання всього робочого процесу, аварії поза вузлами чи збої в інших місцях без під’єднаних виходів помилок. На нашу думку, відокремлення перевірки даних від обробки допомагає краще зрозуміти контракт відповіді.
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
Налаштуйте тіла JSON-відповідей у n8n Respond to Webhook

Створіть три кінцеві вузли n8n Respond to Webhook. У кожному виберіть JSON у полі Respond With і явно задайте Response Code відповідно до потрібного рядка початкового контракту. Таблиця нижче уточнює налаштування тіла відповіді; вираз для успіху зчитує поточний JSON-елемент вузла обробки.
| Вузол відповіді | Налаштування Response Body |
|---|---|
| Успіх | Вираз: {{ $json }} |
| Некоректні вхідні дані | Фіксований JSON із рядка контракту для некоректних вхідних даних |
| Оброблений збій | Фіксований JSON із рядка контракту для обробленого збою |
Залиште тіло відповіді про збій фіксованим, не розкриваючи подробиць винятку. На нашу думку, клієнти мають отримувати стабільний публічний контракт помилок, а внутрішня діагностика має залишатися частиною процесу налагодження команди.
Sources: Respond to Webhook | Nodes | n8n Docs
Перевірте кожен результат, який отримує клієнт

Перш ніж надсилати запит, натисніть Listen for test event; за потреби повторно активуйте очікування перед наступними запитами. У запропонованих командах замініть TEST_URL на тестову адресу вузла. curl --json не перевіряє коректність JSON; -i додає до виводу заголовки відповіді разом із тілом.
- Надішліть дані для успішного результату: curl -i --json '{"name":"Ada"}' 'TEST_URL'
- Надішліть некоректні поля: curl -i --json '{}' 'TEST_URL'
- Надішліть дані для контрольованого збою: curl -i --json '{"name":"Ada","simulateFailure":true}' 'TEST_URL'
Для кожного запиту запишіть HTTP-статус, заголовки, тіло JSON і гілку відповіді, що виконалася. Порівняйте результати з контрактом завдання; ручний перегляд не підтверджує автоматизоване тестове покриття чи коректність 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 не працює? Простежте гілку виконання
Якщо клієнт отримує неочікувану відповідь, скористайтеся запропонованим діагностичним списком. Робочий процес, який завершується без виконання n8n Respond to Webhook, повертає стандартне повідомлення n8n зі статусом 200; така резервна відповідь порушує явний контракт відповіді цієї вправи.
Вправу завершено, коли всі три набори вхідних даних доходять до призначених їм вузлів відповіді, а статуси й тіла відповідей відповідають вимогам. Для осмислення поясніть, чому некоректні поля та виняток під час обробки потребують окремих результатів і чому раннє підтвердження отримання запиту не може гарантувати завершення обробки.
Залишайте цю вправу синхронною та короткою за часом виконання. Документація n8n Cloud описує відповідь 524, якщо вхідний вебхук не отримує відповіді протягом 100 секунд; інша інфраструктура та клієнти можуть установлювати інші граничні строки. Сприймайте цей ліміт як межу, а не як цільовий час.
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


