”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Laravel要去:我的旅程和纤维API样板的创建

Laravel要去:我的旅程和纤维API样板的创建

发布于2025-03-12
浏览:336

Laravel to Go: My Journey and the Creation of a Fiber API Boilerplate花费四年以上,我对MVC(Model-View-Controller)架构非常熟悉。它的简单性和结构使与之合作变得很高兴,而Laravel的有条理的文件夹可帮助开发人员保持正轨。您始终知道将代码放置在哪里,以及广泛的内置工具 - 数据库连接,redis,排队,迁移,ORM等等 - 将设置无缝。只需对您的环境进行几次调整,您的应用就可以使用了。

对我来说,Laravel的MVC方法仍然是最强大的方法之一。

模型

定义了您的数据,确定用户看到的内容,并且管理您的业务逻辑。它很简单但结构化,默认情况下,Laravel提供了此设置,使其成为开发的绝佳框架。 ,但是随着我的职业发展和跨越行业和企业的工作,我意识到Laravel的MVC方法并不总是足够的,尤其是对于复杂的应用程序。

扩展Laravel的MVC复杂性

视图
层通常会未使用。同时,将所有逻辑放入控制器中都可以迅速导致难以维护的膨胀文件。

为了解决这个问题,我通过介绍

层来扩展Laravel的MVC结构,创建了这样的流程: [2

控制器:处理验证并指导应用程序流。

service

:管理业务逻辑,分解为可重复使用的函数。

:管理数据库交互。
  • 模型:定义数据结构。
  • 这种分层方法使代码更可维护和可扩展。随着时间的流逝,我习惯了这种结构,以至于在其他项目中采用它很自然。
  • 输入GO:一个全新的挑战 当我开始使用Go(Golang)时,感觉就像踏入未知的领域。 GO与PHP完全不同,缺乏固有的文件夹结构。这也不是面向对象的语言,因此我不能简单地复制我从Laravel中知道的内容。
  • 经过一些反复试验,我决定坚持自己熟悉的内容:概念(控制器,服务,存储库,模型)。即使它需要一些创造性的思维,我也适应了这种结构。此外,我探索了可以简化开发的框架。我尝试了光纤
  • ,最终以速度,现代特征和活跃的社区选择光纤。

我的纤维API样板的诞生

在使用GO和Fiber两年以上,我决定创建一个样板来简化API开发。这不仅是我的,而且我也想帮助其他人迅速建立自己的项目。

结果:

Fiber API Boilerplate

此样板专门用于API,因此不包含视图渲染或模板引擎之类的功能。文件夹结构从:汲取灵感 Golang项目布局标准

Ayoub Zulfiqar的项​​目布局要素

我还从Laravel那里借了许多想法,例如ORM,数据库连接,REDIS,排队和身份验证。虽然它不像Laravel那样全面,但足以构建通用API。

样板的功能 这是当前提供的样板:

    authentication
  • :开箱即用的简化用户管理。
  • 错误报告
:与Sentry集成。


应用程序监视

:将新遗物用于实时见解。

热重新加载
    :包括以更快地开发的空气。
  1. 静态代码检查
  2. :使用Golangci-lint。
  3. api documentation
  4. :通过赃物进行内置的摇摇支持。
  5. 依赖项注入
  6. :由Google Wire驱动。
  7. 部署
  8. :随附Docker和无缝部署的主管。
  9. 存储库还包括示例代码和详细的
  10. readme
  11. ,以指导您浏览每个文件夹和功能。
  12. 为未来建造
  13. 在样板已经起作用时,我计划通过添加迁移,事件侦听器和命令等工具来进一步扩展它。这是一个不断发展的项目,旨在与用户一起成长。
  14. 欢迎您探索和使用样板。随意自定义它 - 您喜欢的添加工具或删除不需要的工具。如果您有建议或功能请求,请创建问题或提交拉动请求。
  15. 开始
查看

Fiber API Boilerplate 并进行旋转。我希望它能尽可能多地简化您的API开发旅程。让我们一起建造一些惊人的东西!


版本声明 本文转载于:https://dev.to/granitebps/laravel-to-go-my-journey-and-the-creation-of-a-fiber-api-boilerplate-2pll?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-12
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-04-12
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-04-12
  • IE6兼容自定义数据属性指南
    IE6兼容自定义数据属性指南
    在IE 6中的自定义数据属性:分发神话 custom Data属性,HTML5的关键功能,使开发人员能够将非可视数据附加到HTML elements for HTML elements以供以后回顾。但是,一个常见的误解包围着它们与诸如Internet Explorer 6的传统浏览器的兼容性。 误...
    编程 发布于2025-04-12
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-04-12
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-04-12
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-04-12
  • 为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    Class 'ZipArchive' Not Found Error While Installing Archive_Zip on Linux ServerSymptom:When attempting to run a script that utilizes the ZipAr...
    编程 发布于2025-04-12
  • Pandas DataFrame转字典:列表值转换技巧
    Pandas DataFrame转字典:列表值转换技巧
    在许多数据操作任务中,将pandas dataframe转换为词典,将pandas dataframe从pandas dataframe提取到方便的格式是必要的。一种常见的需求是将数据框转换为python字典,其中第一列的元素变为键,同一行中其他列的元素变为值。我们要将此数据框架转换为以下形式的字...
    编程 发布于2025-04-12
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-04-12
  • Entity Framework中如何高效查询复合键实体?
    Entity Framework中如何高效查询复合键实体?
    高效查询 Entity Framework 中具有复合主键的实体 在使用 Entity Framework 和复合主键时,实现与简单 Contains() 查询相同的功能变得更加复杂。本文探讨解决此问题的各种方法: 尝试对键值对使用 Contains 尝试使用表示复合主键值的元组进行直接连接或 Co...
    编程 发布于2025-04-12
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-12
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-12
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_rename() runkit_function_redefine() //重新定义'this'以返回“新和改...
    编程 发布于2025-04-12
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-04-12

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3