Какой фреймворк для Golang вы могли бы порекомендовать, который включает роутинг, ORM и middleware?

Я изучаю Go для использования его в качестве бэкэнда и хотел бы узнать, существуют ли аналогичные фреймворки, подобные Laravel, которые позволят создать полноценный REST API. Мне интересны функции, такие как роутинг, ORM для MySQL/PostgreSQL, а также миддлвары для ограничения доступа и авторизации по подписи.
  • 3 апреля 2025 г. 9:45
Ответы на вопрос 2
Для разработки бэкэнда на Go с функциональностью, аналогичной Laravel, вы можете рассмотреть несколько фреймворков, которые включают роутинг, ORM и миддлвары. Вот несколько популярных вариантов:

1. **Gin**:
   - **Роутинг**: Gin предоставляет высокопроизводительный роутер с простым API.
   - **Middleware**: Поддерживает создание миддлваров.
   - **ORM**: Хотя Gin не включает ORM в стандартную поставку, его легко интегрировать с GORM (ниже описан).
   - **Описание**: Gin является одним из самых популярных фреймворков для создания RESTful API на Go благодаря своей производительности и простоте использования.

2. **GORM**:
   - Это ORM библиотека для Go, которую можно использовать с Gin. Поддерживает работу с различными базами данных, включая MySQL и PostgreSQL. GORM предоставляет множество функций для работы с отношениями, транзакциями и миграциями.

3. **Echo**:
   - **Роутинг**: Echo также предлагает быстрый и простой роутер с поддержкой группировки маршрутов.
   - **Middleware**: Echo имеет встроенные миддлвары и позволяет легко добавлять свои.
   - **ORM**: Как и в случае с Gin, можно использовать GORM для взаимодействия с базой данных.
   - **Описание**: Echo фокусируется на производительности и простоте использования, хорошо подходит для создания RESTful API.

4. **Fiber**:
   - **Роутинг**: Fiber построен на основе Fasthttp, что обеспечивает очень высокую производительность.
   - **Middleware**: Поддерживает миддлвары и их использование в цепочках.
   - **ORM**: Fiber может быть интегрирован с GORM или другими ORM, такими как ent.
   - **Описание**: Fiber стремится к простоте и производительности, что делает его отличным выбором для создания высоконагруженных API.

5. **Beego**:
   - **Роутинг**: Beego включает в себя мощный роутер.
   - **Middleware**: Имеет встроенную поддержку миддлваров.
   - **ORM**: Beego имеет встроенный ORM, который поддерживает работу с различными базами данных.
   - **Описание**: Beego — это подразумевающий проводник, который предоставляет множество функций «из коробки», включая поддержку MVC.

Рекомендуется использовать Gin или Echo в сочетании с GORM для достижения максимальной производительности и функциональности при создании RESTful API. Это сочетание популярно среди разработчиков и имеет много ресурсов и документации для обучения.
Не рекомендую даже пробовать. 
В Go не принято использовать такое. Какие-то люди пишут и ORM (например Gorm), и различные роутеры, но это пользуется всё меньшей популярностью. В результате вы не получите много информации, когда вам понадобится решать какие-то проблемы с этими монстрами.
Я когда-то приходил в Go с навыками Symfony + Doctrine ORM, и тоже не понимал, как они без этого живут. И в результате понял, что в подавляющем большинстве проектов эти монстры просто не нужны и становятся обузой, когда проект развивается. Да, поначалу всё хорошо и быстро, а когда в проект приходят новые сложные фичи, начинается борьба не только с этими фичами, но и с самим фреймворком, и, особенно, с ORM. В результате получается Франкенштейн, пляшущий на костылях. Всё это еле ворочается, а Доктрина выплёвывает такие запросы, что их даже читать страшно.
Похожие вопросы