beego 快速上手
beego
是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架
主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架
1 下载 beego
$ go get github.com/astaxie/beego
$ go get github.com/beego/bee
会生成一个可执行文件在bin目录下
(要把GOPATH/bin 添加到环境变量中)
2 建立一个应用来检测安装
》 cd 到 src 中 执行 bee new hello
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.9.1
2018/06/13 18:30:28 WARN ▶ 0001 You current workdir is not inside $GOPATH/src.
2018/06/13 18:30:28 INFO ▶ 0002 Creating application...
create D:\goprogram\src\hello\
create D:\goprogram\src\hello\conf\
create D:\goprogram\src\hello\controllers\
create D:\goprogram\src\hello\models\
create D:\goprogram\src\hello\routers\
create D:\goprogram\src\hello\tests\
create D:\goprogram\src\hello\static\
create D:\goprogram\src\hello\static\js\
create D:\goprogram\src\hello\static\css\
create D:\goprogram\src\hello\static\img\
create D:\goprogram\src\hello\views\
create D:\goprogram\src\hello\conf\app.conf
create D:\goprogram\src\hello\controllers\default.go
create D:\goprogram\src\hello\views\index.tpl
create D:\goprogram\src\hello\routers\router.go
create D:\goprogram\src\hello\tests\default_test.go
create D:\goprogram\src\hello\main.go
2018/06/13 18:30:28 SUCCESS ▶ 0003 New application successfully created!
》 cd hello 项目中 运行 bee run hello
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.9.1
2018/06/13 18:33:34 INFO ▶ 0001 Using 'hello' as 'appname'
2018/06/13 18:33:34 INFO ▶ 0002 Initializing watcher...
hello/controllers
hello/routers
hello
2018/06/13 18:33:38 SUCCESS ▶ 0003 Built Successfully!
2018/06/13 18:33:38 INFO ▶ 0004 Restarting 'hello'...
2018/06/13 18:33:38 SUCCESS ▶ 0005 './hello' is running...
2018/06/13 18:33:39.163 [I] [asm_amd64.s:2361] http server Running on http://:8080
2018/06/13 18:33:39.247 [C] [asm_amd64.s:2361] ListenAndServe: listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
默认端口 是 localhost:8080 当然可以 更改这个参数
main.go
package main
import (
_ "hello/routers"
"github.com/astaxie/beego"
)
func main() {
beego.Run(":8081") // 更改端口
}
入口文件 main.go
package main
import (
_ "hello/routers"
"github.com/astaxie/beego"
)
type MainController struct { // 定义 Controller,这里我们定义了一个 struct 为 MainController,充分利用了 Go 语言的组合的概念,匿名包含了 beego.Controller,这样我们的 MainController 就拥有了 beego.Controller 的所有方法。
beego.Controller
}
func (this *MainController) Get() { // 定义 RESTful 方法,通过匿名组合之后,其实目前的 MainController 已经拥有了 Get、Post、Delete、Put 等方法,这些方法是分别用来对应用户请求的 Method 函数,如果用户发起的是 POST 请求,那么就执行 Post 函数。所以这里我们定义了 MainController 的 Get 方法用来重写继承的 Get 函数,这样当用户发起 GET 请求的时候就会执行该函数。
this.Ctx.WriteString("Hello world")
}
func main() {
beego.Router("/index", &MainController{}) // Router 注册路由,路由就是告诉 beego,当用户来请求的时候,该如何去调用相应的 Controller,这里我们注册了请求 / 的时候,请求到 MainController。这里我们需要知道,Router 函数的两个参数函数,第一个是路径,第二个是 Controller 的指针。
beego.Run(":8081") // Run 应用,最后一步就是把在导入包 初始化的 BeeApp 开启起来,其实就是内部监听了 8081 端口:Go 默认情况会监听你本机所有的 IP 上面的 8080 端口
}