← Назад до блогу

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

Три конверти уособлюють 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 додає до виводу заголовки відповіді разом із тілом.

  1. Надішліть дані для успішного результату: curl -i --json '{"name":"Ada"}' 'TEST_URL'
  2. Надішліть некоректні поля: curl -i --json '{}' 'TEST_URL'
  3. Надішліть дані для контрольованого збою: 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

Спробуйте на практиці

Практичні завдання з n8n

Оберіть завдання й створіть робочий воркфлоу у власному середовищі n8n – до кожного завдання є п’ять поступових підказок.

Спробувати практичне завдання

Для вашої команди

Програми навчання n8n для однієї команди чи відділу – на вашому власному екземплярі n8n, з вашими інструментами й даними.

Навчання для вашої команди

Оцінка навичок n8n

Безкоштовний тест приблизно на 20 хвилин, англійською: 30 запитань у 10 напрямах і рівень від початківця до експерта. На AI Adoption Score – іншому проєкті автора цього сайту.

Дізнатися свій рівень n8n