首页 > 后端开发 > Golang > Laravel to Go:我的旅程和 Fiber API 样板的创建

Laravel to Go:我的旅程和 Fiber API 样板的创建

Susan Sarandon
发布: 2024-12-29 11:02:11
原创
900 人浏览过

Laravel to Go: My Journey and the Creation of a Fiber API Boilerplate

沉浸在 Laravel 四年多之后,我已经非常熟悉 MVC(模型-视图-控制器)架构。它的简单性和结构使其使用起来很愉快,Laravel 精心组织的文件夹可帮助开发人员保持正轨。您始终知道将代码放在哪里,并且广泛的内置工具(数据库连接、Redis、队列、迁移、ORM 等)使设置变得无缝。只需对您的环境进行一些调整,您的应用程序就可以运行了。

对我来说,Laravel 的 MVC 方法仍然是最强大的方法之一。 模型 定义您的数据,视图 确定用户看到的内容,控制器 管理您的业务逻辑。它简单而结构化,Laravel 默认提供此设置,使其成为一个出色的开发框架。

但是随着我职业生涯的进步以及我跨行业和企业的工作,我意识到 Laravel 的 MVC 方法并不总是足够的,特别是对于复杂的应用程序。


扩展 Laravel 的 MVC 复杂性

MVC 在简单的应用程序中表现出色,但当逻辑变得更加复杂时可能会出现不足。例如,当使用 Laravel 作为 API 时,View 层经常未被使用。同时,将所有逻辑放入控制器中很快会导致文件臃肿且难以维护。

为了解决这个问题,我通过引入 ServiceRepository 层来扩展 Laravel 的 MVC 结构,创建如下所示的流程:

控制器 → 服务 → 存储库 → 模型

  • 控制器:处理验证并指导应用程序流程。
  • 服务:管理业务逻辑,分为可重用的函数。
  • 存储库:管理数据库交互。
  • 模型:定义数据结构。

这种分层方法使代码更易于维护和扩展。随着时间的推移,我已经习惯了这种结构,因此在其他项目中采用它感觉很自然。


输入 Go:全新挑战

当我开始使用 Go(Golang)时,感觉就像踏入了未知的领域。 Go 与 PHP 有很大不同,缺乏固有的文件夹结构。它也不是面向对象的语言,所以我不能简单地复制我从 Laravel 中学到的东西。

经过一番尝试和错误,我决定坚持使用我熟悉的内容:CSRM 概念(控制器、服务、存储库、模型)。我将这种结构改编为 Go,尽管它需要一些创造性思维。此外,我还探索了可以简化开发的框架。我尝试了 GinFiber,最终选择 Fiber 是因为它的速度、现代功能和活跃的社区。


My Fiber API 样板的诞生

使用 Go 和 Fiber 工作两年多后,我决定创建一个样板来简化 API 开发。这不仅仅适合我——我也想帮助其他人快速建立他们的项目。

结果:Fiber API 样板

此样板文件专门用于 API,因此它不包含视图渲染或模板引擎等功能。文件夹结构的灵感来自:

  • Golang项目布局标准
  • Ayoub Zulfiqar 的项目布局要点

我还借鉴了Laravel的很多思想,比如ORM、数据库连接、Redis、队列和身份验证。虽然它不如 Laravel 那么全面,但对于构​​建通用 API 来说已经足够了。


样板的特点

以下是样板当前提供的内容:

  1. 身份验证:开箱即用的简化用户管理。
  2. 错误报告:与Sentry集成。
  3. 应用程序监控:使用 New Relic 进行实时洞察。
  4. 热重载:包括 Air 以加快开发速度。
  5. 静态代码检查:使用 GolangCI-Lint。
  6. API 文档:通过 Swag 内置 Swagger 支持。
  7. 依赖注入:由 Google Wire 提供支持。
  8. 部署:附带 Docker 和 Supervisor,可实现无缝部署。

存储库还包括示例代码和详细的自述文件,以指导您完成每个文件夹和功能。


建设未来

虽然样板已经可以使用,但我计划通过添加迁移、事件侦听器和命令等工具来进一步扩展它。这是一个不断发展的项目,旨在与用户一起成长。

欢迎您探索和使用样板文件。您可以随意自定义它——添加您喜欢的工具或删除您不需要的工具。如果您有建议或功能请求,请创建问题或提交拉取请求。


开始使用

查看 Fiber API 样板 并试用一下。我希望它能像我一样帮助简化您的 Go API 开发之旅。让我们一起创造一些令人惊奇的东西!

以上是Laravel to Go:我的旅程和 Fiber API 样板的创建的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板