生成beego工程之前需要先配置好beego與bee環(huán)境
生成beego工程
本工程采用api的形式盗棵,不需要界面冰更,所以使用bee api
的方式生成工程贰健,bee工具非常好用北滥,可以用以下方式根據(jù)數(shù)據(jù)庫(kù)的結(jié)構(gòu)自動(dòng)生成工程
bee api appName -driver=mysql -conn="root:password@tcp(localhost:3306)/test"
勺美,其中appName
是工程名稱,-driver=mysql
是指生成工程的數(shù)據(jù)庫(kù)是mysql
碑韵,-conn="root:password@tcp(localhost:3306)/test"
是mysql
連接信息赡茸。
postgres數(shù)據(jù)庫(kù)生成:
bee api data_sync -driver=postgres -conn="postgres://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable"
根據(jù)特定數(shù)據(jù)表快速生成代碼
bee generate appcode -tables="tablename1,tablename2" -driver=mysql -conn="root:password@tcp(127.0.0.1:3306)/test" -level=3
,其中level
為生成代碼的級(jí)別
可通過(guò)help
命令查看具體用法:
bee help generate
USAGE
bee generate [command]
OPTIONS
-conn Connection string used by the SQLDriver to connect to a database instance.
-ddl Generate DDL Migration
-driver Database SQLDriver. Either mysql, postgres or sqlite.
-fields List of table Fields.
-level Either 1, 2 or 3. i.e. 1=models; 2=models and controllers; 3=models, controllers and routers.
-tables List of table names separated by a comma.
DESCRIPTION
? To scaffold out your entire application:
$ bee generate scaffold [scaffoldname] [-fields="title:string,body:text"] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
? To generate a Model based on fields:
$ bee generate model [modelname] [-fields="name:type"]
? To generate a controller:
$ bee generate controller [controllerfile]
? To generate a CRUD view:
$ bee generate view [viewpath]
? To generate a migration file for making database schema updates:
$ bee generate migration [migrationfile] [-fields="name:type"]
? To generate swagger doc file:
$ bee generate docs
? To generate a test case:
$ bee generate test [routerfile]
? To generate appcode based on an existing database:
$ bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
進(jìn)程內(nèi)監(jiān)控
beego提供了應(yīng)用信息的監(jiān)控和展示祝闻,可以查看實(shí)時(shí)信息比如qps占卧,健康狀況,程序性能相關(guān)(goroutine联喘,gc华蜒,cpu等),可以查看靜態(tài)信息比如路由配置豁遭,conf配置信息叭喜,過(guò)濾器信息,還可以查看和觸發(fā)任務(wù)蓖谢。
進(jìn)程監(jiān)控默認(rèn)是關(guān)閉的捂蕴,可以通過(guò)簡(jiǎn)單的配置中打開(kāi)譬涡,很方便:
EnableAdmin = true
AdminHttpAddr = 0.0.0.0 #默認(rèn)監(jiān)聽(tīng)地址是localhost
AdminHttpPort = 8088
自動(dòng)化文檔
beego通過(guò)swagger和內(nèi)部的注釋解析能夠?qū)崿F(xiàn)自動(dòng)文檔的效果,使用方法:
- routers/router.go中路由只能使用namespace+Include的寫(xiě)法啥辨,而且只支持二級(jí)解析涡匀,一級(jí)版本號(hào),二級(jí)分別表示應(yīng)用模塊溉知。
- routers/router.go文件中設(shè)置全局的應(yīng)用信息陨瘩。注意,必須寫(xiě)在文件頂部级乍。
- 注釋的格式(每個(gè)字段的含義可以參照Auto Docs):
// @Title login
// @Description Logs user into the system
// @Param username query string true "The username for login"
// @Param password query string true "The password for login"
// @Success 200 {string} login success
// @Failure 403 user not exist
// @router /login [get]
func (u *UserController) Login() {
username := u.GetString("username")
password := u.GetString("password")
if models.Login(username, password) {
u.Data["json"] = "login success"
} else {
u.Data["json"] = "user not exist"
}
u.ServeJSON()
}
4.在配置文件中打開(kāi)自動(dòng)文檔配置:
EnableDocs = true
5.啟動(dòng)時(shí)添加自動(dòng)文檔參數(shù):
bee run -gendoc=true -downdoc=true
滿足以上配置舌劳,beego會(huì)自動(dòng)解析控制器中的注釋,啟動(dòng)swagger服務(wù)玫荣,并在/docs接口上提供已生成好的json字串蒿囤。
訪問(wèn)swagger服務(wù)并在swagger中訪問(wèn)/docs接口,即可看到接口的文檔崇决,同時(shí)也可以對(duì)接口進(jìn)行測(cè)試材诽。