」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Laravel要去:我的旅程和纖維API樣板的創建

Laravel要去:我的旅程和纖維API樣板的創建

發佈於2025-03-12
瀏覽:118

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]刪除
最新教學 更多>
  • 編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    錯誤:“ usr/bin/ld:找不到-l “ 此錯誤表明鏈接器在鏈接您的可執行文件時無法找到指定的庫。為了解決此問題,我們將深入研究如何指定庫路徑並將鏈接引導到正確位置的詳細信息。 添加庫搜索路徑的一個可能的原因是,此錯誤是您的makefile中缺少庫搜索路徑。要解決它,您可以在鏈接器命令中添...
    程式設計 發佈於2025-05-18
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確預期操作結果的火災和...
    程式設計 發佈於2025-05-18
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-05-18
  • 如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    程式設計 發佈於2025-05-18
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-05-18
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-05-18
  • 為什麼儘管有效代碼,為什麼在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-05-18
  • Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    程式設計 發佈於2025-05-18
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-05-18
  • 如何在Chrome中居中選擇框文本?
    如何在Chrome中居中選擇框文本?
    選擇框的文本對齊:局部chrome-inly-ly-ly-lyly solument 您可能希望將文本中心集中在選擇框中,以獲取優化的原因或提高可訪問性。但是,在CSS中的選擇元素中手動添加一個文本 - 對屬性可能無法正常工作。 初始嘗試 state)</option> < o...
    程式設計 發佈於2025-05-18
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的使用column方法可能會導致錯誤。 df.with...
    程式設計 發佈於2025-05-18
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-05-18
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    程式設計 發佈於2025-05-18
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-05-18
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-05-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3