Post Thumbnail

Автор предлагает паттерн для Go-сервисов: вынести обвязку и все связанное с декодированием, валидацией, приведеним типов, кодированием из каждого хендлера в один обобщённый адаптер Wrap[In, Out] на транспорт.

Сервисная функция остается чистой - func(ctx, In) (Out, error) без малейшего следа HTTP, gRPC или JSON. Для каждого транспорта пишется один Wrap, который принимает decode + service function + encode и возвращает готовый http.Handler или gRPC-handler. Добавление нового эндпоинта сводится к decode/encode + одной строке в роутере, а middleware и интерцепторы работают как обычно, снаружи Wrap.

Старо как мир, но красиво. На фотке, кстати, самый настоящий врап. Погуглите, если не верите

Похожее

Post Thumbnail

TigerFS

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

Post Thumbnail

Иггдрасиль

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

Post Thumbnail

Мультиплеер

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

Post Thumbnail

httptrace

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