Beego初步
简介
beego是国内团队开源的golang开发框架,是一个关注度和使用量都比价高的项目。
Beego是一个成熟的MVC框架,它有着自己的日志库、ORM和web框架。你不需要再查找和安装第三方的库。Beego还有一个内置的工具bee,这个工具可以实时的监控代码的更改。
Beego可以大量的节省你的开发时间,尤其是项目初期可以帮你创建日志框架和程序架构。
beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。
快速启动 Quick Start
beego文档快速入门中给出一个很简单的例子。
安装
beego 包含一些示例应用程序以帮您学习并使用 beego 应用框架。
你需要安装或者升级 Beego 和 Bee 的开发工具:
$ go get -u github.com/astaxie/beego
$ go get -u github.com/beego/bee
为了能够直接使用bee命令,需要将$GOPATH/bin添加到$PATH变量中。
创建应用
创建一个名为hello的应用,可以选择web应用,或者api应用:
$ bee new hello //创建一个web应用
$ bee api hello //创建一个api应用
执行结束后,会在当前目录下创建名为hello的目录:
- .
- |____hello
- | |____conf
- | | |____app.conf
- | |____controllers
- | | |____default.go
- | |____main.go
- | |____models
- | |____routers
- | | |____router.go
- | |____static
- | | |____css
- | | |____img
- | | |____js
- | | | |____reload.min.js
- | |____tests
- | | |____default_test.go
- | |____views
- | | |____index.tpl
编译运行
进入hello目录中,执行bee run,就会完成编译、运行:
$ cd hello/
$ bee run
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.9.1
2017/10/30 14:33:05 INFO ▶ 0001 Using 'hello' as 'appname'
2017/10/30 14:33:05 INFO ▶ 0002 Initializing watcher...
2017/10/30 14:33:06 SUCCESS ▶ 0003 Built Successfully!
2017/10/30 14:33:06 INFO ▶ 0004 Restarting 'hello'...
2017/10/30 14:33:06 SUCCESS ▶ 0005 './hello' is running...
2017/10/30 14:33:06 [I] [asm_amd64.s:2197] http server Running on http://:8080
打包发布
项目打包发布:
$ bee pack
代码生成
生成models:
bee generate model user -fields="name:string,age:int"
生成controller:
bee generate controller user
生成view:
bee generate view user
生成文档:
bee generate docs
自动生成
从数据库一键生成代码
bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
generate appcode based on an existing database
-tables: a list of table names separated by ',', default is empty, indicating all tables
-driver: [mysql | postgres | sqlite], the default is mysql
-conn: the connection string used by the driver.
default for mysql: root:@tcp(127.0.0.1:3306)/test
default for postgres: postgres://postgres:postgres@127.0.0.1:5432/postgres
-level: [1 | 2 | 3], 1 = models; 2 = models,controllers; 3 = models,controllers,router
例如为数据库中所有的表生成models、controllers、router:
bee generate appcode -driver=mysql -conn="root:@tcp(127.0.0.1:3306)/kube-loadbalance" -level=3
$ ls models/
backend.go listener.go object.go resource.go user.go
cluster.go loadbalancer.go pool.go template.go
$ ls controllers/
backend.go listener.go object.go resource.go user.go
cluster.go loadbalancer.go pool.go template.go
routers/routers.go中也自动生成了路由:
func init() {
ns := beego.NewNamespace("/v1",
beego.NSNamespace("/backend",
beego.NSInclude(
&controllers.BackendController{},
),
),
beego.NSNamespace("/cluster",
beego.NSInclude(
&controllers.ClusterController{},
),
),
...
生成controller
bee generate controller user
生成models
bee generate model user -fields="name:string,age:int"
生成view
bee generate view user
生成文档
自动创建swagge文件:
$ bee generate docs
启动后访问/swagger查看api:
func main() {
if beego.BConfig.RunMode == "dev" {
beego.BConfig.WebConfig.DirectoryIndex = true
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
}
beego.Run()
}
注意,如果是第一次运行,带上-downdoc=true:
bee run -downdoc=true