Post Thumbnail

В многослойном Go-сервисе легко случайно пропустить наверх ошибки хранения данных (например, sql.ErrNoRows) вплоть до самых обработчика HTTP или gRPC и это приводит к связыванию транспортного уровня с деталями реализации базы данных.

Чтоб такого не случалось нужно определить доменные ошибоки (например user.ErrNotFound и user.ErrConflict) на границе сервиса и их трансляции в репозиториях: специфичные для БД ошибки перехватываются и заменяются доменными sentinel-ошибками. В результате транспортные обработчики работают только с доменными ошибками, преобразуя их в соответствующие HTTP или gRPC статусы (404, 409, 500), не импортируя пакеты БД

Похожее

Post Thumbnail

TigerFS

Файловая система — это просто API. А TigerFS — это файловая система, работающая ...

Post Thumbnail

Иггдрасиль

В статье про использование Yggdrasil в качестве встраиваемой Go-библиотеки. ...

Post Thumbnail

Мультиплеер

В статье автор рассказывает про архитектуру управления состоянием своей многопол...

Post Thumbnail

httptrace

Пакет net/http/httptrace из стандартной библиотеки Go позволяет отслеживать внут...