DEV Community на русском
Подписаться
Крошечный микросервис на Nim, три реальных бага и чему они научили меня о моей собственной "мамочкиной вилке"
Автор создал конечную точку POST /api/contact для своего портфолио-сайта для обработки сообщений.
Он использовал свой форк Mummy, который включает генерацию схемы OpenAPI и типизированную валидацию.
Конечная точка принимает имя, адрес электронной почты и сообщение, выполняя проверку на наличие, тип, длину и формат электронной почты.
Ошибки при валидации возвращают ответ 400, в то время как возможные сбои отправки приводят к общему ответу 500.
Дополнительные промежуточные программы включают обработку CORS, встроенный ограничитель скорости и ведение журнала.
Первоначально планировалось использовать SMTP, но сервис был переключен на REST API Resend из-за ограничений бесплатного уровня Render на исходящие порты SMTP.
Возникли три неожиданные ошибки: несоответствие типов из-за импорта псевдонимов std/httpcore, проблема компилятора gcsafe с логически неизменяемой глобальной переменной и незарегистрированный маршрут OPTIONS, препятствующий выполнению промежуточного ПО для предварительных запросов.
Каждая ошибка дала ценное представление о внутренней работе форка, системе модулей Nim и потокобезопасном программировании.
Автор подчеркивает, что эти проблемы специфичны для пересечения функций Nim и фреймворка Mummy.
Полные детали реализации и скрипты развертывания доступны в репозитории проекта.