
Query‑first подход или как из SQL запросов или MongoDB контрактов получить готовое REST API
idrisovmz 42 минуты назад Query‑first подход или как из SQL запросов или MongoDB контрактов получить готовое REST API Средний 8 мин 2K Go * MongoDB * PostgreSQL * Проектирование API * Open source * Кейс Из песочницы Я...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Вот важная новость с фронта ИИ: idrisovmz 42 минуты назад Query‑first подход или как из SQL запросов или MongoDB контрактов получить готовое REST API Средний 8 мин 2K Go * MongoDB * PostgreSQL * Проектирование API * Open source * Кейс Из песочницы Я уже давно думал об одной вроде небольшой, но на самом деле изрядно, по крайней мере меня, доставшей backend‑проблеме. В зависимости от подхода, конечно, но зачастую, мы уже знаем, какие операции и с какими сущностями нам предстоит работать, создавая REST сервис. Но написание моделей и запросов к базе данных всегда проходит лишь как один из этапов написания слоистой архитектуры будущего приложения/микросервиса.
Несмотря на опыт, всё же приходится многократно проходить ручную сборку одних и тех же слоёв по каждому домену, не говоря уже о нейминге эндпоинтов, хендлеров, хелперов и так далее... Почти для каждой новой доменной модели мы проходим один и тот же путь:— написать методы репозитория;— добавить сервисный слой;— создать HTTP handlers;— описать request и response модели;— реализовать auth и авторизацию с ролями для эндпоинтов;— написать/обновить OpenAPI spec;— добавить curl‑примеры; // по желанию, но мне часто нравилось работать с ними— написать тесты;— подключить логирование, Docker, health checks, auth и кучку middleware. Большая часть работы повторяется из проекта в проект.
Технические детали
Беря за основу любимый шаблон все равно мы долго топчемся над реализацией однотипных сущностей прыгая по этому snakeCase, фантазируя над наименованием очередного сервиса, интерфейса, хендлера, хелпера... кажется я уже повторяюсь:). Подходов к началу создания REST сервиса, как мы знаем, немного:— spec‑first— code‑first— whateverIusedToDo‑first — как привык, так пишу + зависит от настроения и погоды // самый частый не признанный, но всеми любимый— query‑first — мне всегда импонировал, но дать название этому подходу (по крайней мере в литературе не встречал сам — ни на что не претендую и готов признать, коли укажете, что такое есть) вдруг захотелось в этом году...
а потом долго писал первые пару строк генератора, да-да, люблю писать сам... Что я называю query‑firstИдея простая: если есть модель и операция с базой данных уже описывает, что конкретно приложение должно делать с тем или иным json, можно использовать эту операцию для создания абсолютно (почти) всего REST приложения... Не претендую быть первым кто это придумал, а может и реализовал, ну разве что 1001ым:).
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





