mysql資料庫一行命令生成GIN+GORM RESTful APIs Golang應用

jjjjerk發表於2018-11-15

MySQL資料庫生成RESTful APIs APP

ginbro,GinBro,Gimbo,GimBro,Jimbo,GinOrm or GinGorm

Feature

  • 自動生成完善的swagger(postman)文件
  • 可以serve SPA應用(比如vuejs全家桶)
  • 快速使用golang+gin+gorm改造依賴mysql專案

ginbro工具安裝

您可以通過如下的方式安裝 ginbro 工具:

go get github.com/dejavuzhou/ginbro

安裝完之後,ginbro 可執行檔案預設存放在 $GOPATH/bin 裡面,所以您需要把 $GOPATH/bin 新增到您的環境變數中,才可以進行下一步。 如何新增環境變數,請自行搜尋 如果你本機設定了GOBIN,那麼上面的命令就會安裝到 GOBIN下,請新增GOBIN到你的環境變數中

如果沒有配置GOBIN到環境變數,執行下面命令

cd $GOPATH/src/github.com/dejavuzhou/ginbro
go build
./ginbro -h

使用

ginbro gen -u root -p PASSWORD -a "127.0.0.1:3306" -d dbname -o "github.com/mojocn/apiapp"

生成新project目錄樹 ginbro-son DEMO程式碼

C:\Users\zhouqing1\go\src\github.com\mojocn\apiapp>tree /f /a
Folder PATH listing
Volume serial number is 8452-D575
C:.
|   2018-11-15-app.log
|   config.toml
|   main.go
|   readme.md
|
+---config
|       viper.go
|
+---handlers
|       gin.go
|       handler_wp_litespeed_img_optm.go
|       handler_wp_litespeed_optimizer.go
|       handler_wp_posts.go
|       handler_wp_users.go
|       handler_wp_yoast_seo_links.go
|
+---models
|       db.go
|       model_wp_litespeed_img_optm.go
|       model_wp_litespeed_optimizer.go
|       model_wp_posts.go
|       model_wp_users.go
|       model_wp_yoast_seo_links.go
|
+---static
|   |   .gitignore
|   |   index.html
|   |   readme.md
|   |
|   \---index_files
|           jquery.js.download
|           style.css
|           syntax.css
|
\---swagger
        .gitignore
        doc.yml
        favicon-16x16.png
        favicon-32x32.png
        index.html
        oauth2-redirect.html
        readme.md
        swagger-ui-bundle.js
        swagger-ui-standalone-preset.js
        swagger-ui.css
        swagger-ui.js

命令引數說明

ginbro gen -h
generate a RESTful APIs app with gin and gorm for gophers. For example:
        ginbro gen -u eric -p password -a "127.0.0.1:3306" -d "mydb"

Usage:
  create gen [flags]

Flags:
  -a, --address string    mysql host:port (default "dev.mojotv.com:3306")
  -l, --appAddr string    app listen Address eg:mojotv.cn, use domain will support gin-TLS (default "127.0.0.1:5555")
  -c, --charset string    database charset (default "utf8")
  -d, --database string   database name (default "dbname")
  -h, --help              help for gen
  -o, --out string        golang project package name of your output project. eg: github.com/awesome/my_project, the project will be created at $GOPATH/src/github.com/awesome/my_project (default "github.
com/dejavuzhou/gin-project")
  -p, --password string   database password (default "Password")
  -u, --user string       database user name (default "root")

環境

  • 我的開發環境
    • Windows 10 專業版 64位
    • go version go1.11.1 windows/amd64
    • mysql 資料庫 <= 5.7

依賴 go packages

go get github.com/gin-contrib/cors
go get github.com/gin-contrib/static
go get github.com/gin-gonic/autotls
go get github.com/gin-gonic/gin
go get github.com/sirupsen/logrus
go get github.com/spf13/viper
go get github.com/spf13/cobra
go get github.com/go-redis/redis
go get github.com/go-sql-driver/mysql
go get github.com/jinzhu/gorm
go get github.com/dgrijalva/jwt-go

開發計劃

  • [x] Auth 和 JWT middleware
  • [ ] 支援PostgreSQL資料庫
  • [x] 支援一鍵生產jwt密碼驗證
  • [ ] 支援MongoDB資料庫
  • [ ] 更具體資料對映關聯模型
  • [x] 分頁總數做mem快取
  • [ ] 支援生成gRPC服務
  • [ ] 更詳細的gorm tag資訊
  • [x] json不現實password等隱私欄位
  • [ ] swaggerDoc引數說明繼續優化
  • [x] 生成友好的.gitignore
  • [ ] 完善go doc
  • [ ] 支援其他語言框架(php-laravel/lumne ,python flask ...)

注意

  • mysql表中沒有id/ID/Id/iD欄位將不會生成路由和模型
  • json欄位 在update/create的時候 必須使可以序列號的json字串(eg0:"{}" eg1:"[]"),否則mysql會報錯

致謝

請各位大神不要吝惜提issue同時附上資料庫表結構檔案

相關文章