Крошечный микросервис на Nim, ... Заметка
DEV Community на русском

Крошечный микросервис на Nim, три реальных бага и чему они научили меня о моей собственной "мамочкиной вилке"

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