搜索
首页后端开发GolangLaravel to Go:我的旅程和 Fiber API 样板的创建

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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
学习GO二进制编码/解码:使用'编码/二进制”软件包学习GO二进制编码/解码:使用'编码/二进制”软件包May 08, 2025 am 12:13 AM

Go语言使用"encoding/binary"包进行二进制编码与解码。1)该包提供binary.Write和binary.Read函数,用于数据的写入和读取。2)需要注意选择正确的字节序(如BigEndian或LittleEndian)。3)数据对齐和错误处理也是关键,确保数据的正确性和性能。

GO:带有标准'字节”软件包的字节切​​片操作GO:带有标准'字节”软件包的字节切​​片操作May 08, 2025 am 12:09 AM

1)usebybytes.joinforconcatenatinges,2)bytes.bufferforincrementalWriter,3)bytes.indexorbytes.indexorbytes.indexbyteforsearching bytes.bytes.readereforrednerncretinging.isnchunk.ss.ind.inc.softes.4)

进行编码/二进制包:优化二进制操作的性能进行编码/二进制包:优化二进制操作的性能May 08, 2025 am 12:06 AM

theencoding/binarypackageingoiseforporptimizingBinaryBinaryOperationsDuetoitssupportforendiannessessandefficityDatahandling.toenhancePerformance:1)usebinary.nativeendiandiandiandiandiandiandiandian nessideendian toavoid avoidByteByteswapping.2)

Go Bytes软件包:简短的参考和提示Go Bytes软件包:简短的参考和提示May 08, 2025 am 12:05 AM

Go的bytes包主要用于高效处理字节切片。1)使用bytes.Buffer可以高效进行字符串拼接,避免不必要的内存分配。2)bytes.Equal函数用于快速比较字节切片。3)bytes.Index、bytes.Split和bytes.ReplaceAll函数可用于搜索和操作字节切片,但需注意性能问题。

Go Bytes软件包:字节切片操纵的实例Go Bytes软件包:字节切片操纵的实例May 08, 2025 am 12:01 AM

字节包提供了多种功能来高效处理字节切片。1)使用bytes.Contains检查字节序列。2)用bytes.Split分割字节切片。3)通过bytes.Replace替换字节序列。4)用bytes.Join连接多个字节切片。5)利用bytes.Buffer构建数据。6)结合bytes.Map进行错误处理和数据验证。

进行二进制编码/解码:实践指南进行二进制编码/解码:实践指南May 07, 2025 pm 05:37 PM

Go的encoding/binary包是处理二进制数据的工具。1)它支持小端和大端字节序,可用于网络协议和文件格式。2)可以通过Read和Write函数处理复杂结构的编码和解码。3)使用时需注意字节序和数据类型的一致性,尤其在不同系统间传输数据时。该包适合高效处理二进制数据,但需谨慎管理字节切片和长度。

Go'字节”软件包:比较,加入,分裂及更多Go'字节”软件包:比较,加入,分裂及更多May 07, 2025 pm 05:29 PM

“字节”包装封装becapeitoffersefficerSoperationsOnbyteslices,cocialforbinarydatahandling,textPrococessing,andnetworkCommunications.byteslesalemutable,允许forforforforforformance-enhangingin-enhangingin-placemodifications,makaythisspackage

GO弦套件:您需要知道的基本功能GO弦套件:您需要知道的基本功能May 07, 2025 pm 04:57 PM

go'sstringspackageIncludeSessentialFunctionsLikeContains,trimspace,split,andReplaceAll.1)contunsefefitedseffitedseffiticefliceCheckSforSubStrings.2)trimspaceRemovesWhitespaceToeensuredity.3)splitparseSseSsess structertextrentextrentedTextlikeCsv.4)replastextlikecsv.4)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。