Я изучаю Go для использования его в качестве бэкэнда и хотел бы узнать, существуют ли аналогичные фреймворки, подобные Laravel, которые позволят создать полноценный REST API. Мне интересны функции, такие как роутинг, ORM для MySQL/PostgreSQL, а также миддлвары для ограничения доступа и авторизации по подписи.
Для разработки бэкэнда на 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. В результате получается Франкенштейн, пляшущий на костылях. Всё это еле ворочается, а Доктрина выплёвывает такие запросы, что их даже читать страшно.