sponge 是一個整合了自動生成程式碼、gin框架和一些常用流行庫的生產力工具。sponge擁有豐富的生成程式碼命令,生成不同的功能程式碼可以組合成完整的服務(類似人為打散的海綿細胞可以自動重組成一個新的海綿)。程式碼解耦模組化設計,很容易構建出從開發到部署的完整工程專案,讓你開發web服務專案輕而易舉、事半功倍,使用go也可以”低程式碼開發”。
Github地址: github.com/zhufuyi/sponge
特點
- 使用簡單:使用UI介面操作,簡單易用。
- web框架:內建了 Gin 框架和常用的中介軟體(日誌、request_id、jwt鑑權、限流、熔斷、鏈路跟蹤、指標採集等)
- 自動生成程式碼:根據sql或protobuf和引數生成不同功能程式碼,例如生成web服務程式碼、handler(CRUD)程式碼、dao(CRUD)程式碼、model程式碼、redis快取程式碼等。
- 程式碼解耦可擴充套件:所有生成的程式碼都可以無縫銜接,不需要手動調整程式碼,支援自動合併新增模板程式碼,實現api介面”低程式碼開發”。
- 高可靠:服務程式碼解耦模組化設計,程式碼經過嚴格的測試,並遵循良好的編碼規範。
- 高效能:在單臺伺服器中的實際業務中壓測獲取資料api介面輕鬆過萬qps。
- 部署簡單:支援一鍵部署到伺服器、docker、k8s上。
優勢
- 提高開發效率:透過生成程式碼來提高開發效率,省去大量手寫程式碼的時間。
- 降低開發成本:整合了 gin 、gorm、go-redis 等流行庫和生成程式碼功能,只需專注編寫業務邏輯程式碼,可以快速開發高效能高可靠 web 服務,降低開發成本。
- 提高開發質量:開發專案簡單化、標準化,生成的程式碼包括了測試用例。
功能
sponge包含豐富的元件(按需使用):
- Web 框架 gin
- 配置解析 viper
- 配置中心 nacos
- 日誌 zap
- 資料庫元件 gorm
- 快取元件 go-redis, ristretto
- 自動化api介面文件 swagger, protoc-gen-openapiv2
- 鑑權 jwt
- 校驗 validator
- 訊息元件 rabbitmq
- 分散式事務管理器 dtm
- 自適應限流 ratelimit
- 自適應熔斷 circuitbreaker
- 鏈路跟蹤 opentelemetry
- 監控 prometheus, grafana
- 服務註冊與發現 etcd, consul, nacos
- 自適應採集 profile
- 資源統計 gopsutil
- 程式碼質量檢查 golangci-lint
- 持續整合部署 CICD jenkins, docker, kubernetes
目錄結構
生成的服務程式碼目錄結構遵循 project-layout,程式碼目錄結構如下所示:
.
├── api # proto檔案和生成的*pb.go目錄
├── assets # 其他與資源庫一起使用的資產(圖片、logo等)目錄
├── cmd # 程式入口目錄
├── configs # 配置檔案的目錄
├── deployments # IaaS、PaaS、系統和容器協調部署的配置和模板目錄
├── docs # 設計文件和介面文件目錄
├── internal # 私有應用程式和庫的程式碼目錄
│ ├── cache # 基於業務包裝的快取目錄
│ ├── config # Go結構的配置檔案目錄
│ ├── dao # 資料訪問目錄
│ ├── ecode # 自定義業務錯誤程式碼目錄
│ ├── handler # http的業務功能實現目錄
│ ├── model # 資料庫模型目錄
│ ├── routers # http路由目錄
│ ├── rpcclient # 連線grpc服務的客戶端目錄
│ ├── server # 服務入口,包括http等
│ └── types # http的請求和響應型別目錄
├── pkg # 外部應用程式可以使用的庫目錄
├── scripts # 用於執行各種構建、安裝、分析等操作的指令碼目錄
├── test # 額外的外部測試程式和測試資料
└── third_party # 外部幫助程式、分叉程式碼和其他第三方工具
快速開始
安裝sponge
支援在windows、mac、linux、docker環境下安裝sponge,點選檢視安裝sponge說明。
開啟生成程式碼介面
安裝完成後,啟動sponge UI服務:
sponge run
在本地瀏覽器訪問 http://localhost:24631
,進入sponge的UI介面,點選左邊選單欄【SQL】–> 【建立web服務】,填寫mysql dsn地址
,點選獲取表名
,然後選擇表名(可多選),接著填寫其他引數,滑鼠放在問號?
位置檢視引數說明,填寫完引數後,點選按鈕下載程式碼
生成web服務完整專案程式碼,如下圖所示:
解壓程式碼,開啟終端,切換到程式碼目錄,執行命令:
# 生成swagger文件
make docs
# 編譯和執行服務
make run
在瀏覽器開啟 localhost:8080/swagger/index.html,在頁面上進行增刪改查、自定義條件分頁查詢的api介面測試,如下圖所示:
就這樣在UI介面生成程式碼和幾行命令就完成了一個web後端服務,隨著業務增加,需要新增更多mysql表的增刪改查介面,在sponge的UI介面,點選左邊選單欄【Public】–> 【生成handler CRUD程式碼】,填寫引數,然後點選按鈕下載程式碼
。
解壓程式碼,把internal
目錄移動到web服務目錄程式碼中,然後執行同樣的命令:
# 生成swagger文件
make docs
# 編譯和執行服務
make run
接著在瀏覽器開啟 localhost:8080/swagger/index.html 對新增的api介面進行測試。
sponge開發文件
更多使用sponge開發web專案的詳情,點選檢視sponge開發文件。
使用示例
影片教程
結語
sponge是一個幫助你輕鬆快速開發web應用的好幫手,透過自動生成程式碼減少人工編寫大量程式碼,讓開發者只需專注編寫業務邏輯程式碼,甚至實現零程式碼開發,極大提高開發效率和降低開發專案週期。不少開發者使用sponge開發的web服務已在生產環境中穩定執行,如果你正在尋找高效率開發web服務框架,sponge是一個不錯的選擇。
本作品採用《CC 協議》,轉載必須註明作者和本文連結