最近一個月在從 Laravel 轉到 Go ,練手寫了一個專案,還沒有寫完,還在持續更新中。對比了多個框架 gin , echo , beego , iris 多個框架 (如果想了解幾個框架的詳細對比可以看下這個連結 Awesome Web Frameworks for Gophers ,並且都嘗試的寫了一些小專案,這一次用 宇宙最快框架 iris
寫了這個後臺介面專案。
- 使用了 iris 框架
- 資料庫使用 gorm
- 資料庫 也是使用了幾個 orm 作對比 xorm , beego orm , gorm這個幾 orm 都不錯,可以都瞭解一下,想用哪一個看個人喜好。
- 使用了 jwt 做單點認證,上面介紹的幾個框架都是支援 jwt 認證的。iris 框架的 jwt 文件寫的相對比較簡單,我自己參考其他框架,做了一些小修改。
- 單元測試 go 有 httptest 包支援 http 請求介面測試,而且功能已經很完善了(當然還沒有 Laravel 那麼方便,不過已經完全夠用了)。在 iris 框架的測試例子基礎上,做了一些簡單封裝方便自己寫後面的開發。 沒有 http 測試的支援的話,寫程式碼,測試程式碼,修改bug的時候都會非常痛苦,特別是你的程式碼結構非常糟糕的時候。如果你還沒有寫單元測試的習慣,強烈推薦你去了解下
TDD 測試驅動開發
。 - iris 框架不像 beego 有自己的熱啟動命令工具。可以用第三方的 gowatch 工具。
廢話了那麼多,現在上專案地址: snowlyg/IrisApiProject
本來寫的一個api介面專案,現在抽空改成一個後臺許可權管理專案
專案介紹
- 採用 iris 框架目後臺api IrisApiProject
- 採用了 gorm 資料庫模組 和 jwt 的單點登陸認證方式
- 測試預設使用了 sqlite3 資料庫
- 修改了專案檔案結構,重新採用了 models , controllers 的結構(上次用的那種方式實在是看不下去了)。
-
用 vue 寫了一個前端 IrisApiVueAdmin
專案目錄結構
- apidoc 介面文件目錄
- caches redis快取目錄
- config 專案配置檔案目錄
- controllers 控制器檔案目錄
- database 資料庫檔案目錄
- middleware 中介軟體檔案目錄
- models 模型檔案目錄
- tmp 測試資料庫 sqlite3 檔案目錄
- tools 其他公用方法目錄
api專案初始化
拉取專案
git clone https://github.com/snowlyg/IrisApiProject.git
載入依賴管理包
本來是用 godep 管理的,使用後發現還是是有問題。暫時不使用依賴管理包,依賴要自行下載。
專案配置檔案 /config/config.toml
cp config.toml.example config.toml
執行專案
gowatch //安裝 gowatch 後才可以使用這個命令,不然只能使用
go run main.go // go 命令
單元測試
http test
go test -v //所有測試
go test -run TestUserCreate -v //單個測試
api 文件使用
自動生成文件 (訪問過介面就會自動成功)
因為原生的 jquery.min.js 裡面的 cdn 是使用國外的,訪問很慢。
有條件的可以開個 vpn ,如果沒有可以根據下面的方法修改一下,訪問就很快了
開啟 apidoc/index.html 修改裡面的
https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
國內的 cdn
https://cdn.bootcss.com/jquery/2.1.3/jquery.min.js
訪問文件,從瀏覽器直接開啟 apidoc/index.html 檔案
前端初始化
拉取專案
git clone https://github.com/snowlyg/IrisApiVueAdmin.git
安裝依賴
npm install
啟動專案
npm run dev
登入專案
//在 conig/config.toml 內配置 LoginUserName
和 LoginPwd
專案管理員賬號 : username
專案管理員密碼 : password