У веб-формы четыре разных участника: поля в браузере, принимающий endpoint, хранилище и канал уведомлений. Одна зелёная надпись в интерфейсе ничего не говорит о трёх последних.
Браузер собирает поля
Атрибут name задаёт имя значения в запросе. label помогает человеку понять поле, но не заменяет name. Для нескольких значений с одним именем используйте getAll, а не потеряйте их при преобразовании в обычный объект.
Endpoint принимает решение
Он проверяет размер, формат и полномочия публичного ключа. Публичный идентификатор формы разрешает отправку, но не должен открывать чтение чужих заявок или управление аккаунтом.
Сохранение и доставка различаются
Надёжный контракт отделяет сохранённую заявку от уведомления владельцу. Сбой почты не должен стирать уже сохранённые данные. При сетевом таймауте браузер может не знать, дошёл ли запрос; повтор требует отдельной политики идемпотентности.
Что проверять
- Правильные поля и явные ошибки в интерфейсе.
- HTTP-ответ по документированному контракту.
- Наличие синтетической заявки в хранилище/кабинете.
- Отдельный результат уведомления.
Начните с инструкции для своего стека, затем проверьте сохранение заявки и уведомление отдельными шагами.
Источники и дата проверки
Редакционная сверка: 2026-10-27. Учитывайте версию инструментов в своём проекте.
Обновлено