1. 安装与使用
1.1 安装Bee
go get github.com/astaxie/beego
go get -u github.com/astaxie/beego
go get -u github.com/beego/bee
1.2 创建一个Bee项目
创建一个标准的 Bee 项目:
bee new myproject
创建一个 api 应用:
bee api apiproject
创建一个标准的 Bee 项目的目录结构:
├─conf
├─controllers
├─models
├─routers
├─static
│ ├─css
│ ├─img
│ └─js
├─tests
└─views
1.3 启动
在本地以开发模式启动应用:
$ bee run
2. Router
2.1 默认访问
在 mian.go
中引入路由系统:
// main.go
package main
import (
+ _ "Bee-Study/quickstart/routers"
"github.com/astaxie/beego"
)
func main() {
beego.Run()
}
首先在 Controller 层创建对应的 Controller 逻辑:
// controllers/default.go
package controllers
import (
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (c *MainController) Get() {
c.Ctx.WriteString("hello")
}
然后将路由文件创建于 routers 目录下:
// routers/router.go
package routers
import (
"Bee-Study/quickstart/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/", &controllers.MainController{
})
}
当我们访问 localhost:prot/
时就会触发 Controller 层的逻辑, 由于浏览器发送的是 GET 请求,所以就会触发 MainController
的 Get()
方法,输出 hello
。
2.2 不同路由匹配不同方法
由于我们在 MainController 中定义了默认的 Get 方法,所以所有指向 MainController 的路由只要发送 Get 请求就会触发 MainController 的 Get()
方法。但通常我们都希望一个 Controller 对象可以处理多个路由请求,所以我们在调用 beego.Router
时可以传入第三个参数,即让当前匹配的路由可以在对应的请求方式下,触发 Controller 对象下的某一方法:
// router.go
beego.Router("/test", &controllers.MainController{
}, "get:handleTest")
// controller.go
func (c *MainController) handleTest(){
// do something
}
3. Controller
3.1 创建一个 Controller
Controller 主要负责逻辑控制,通过上一节我们已经创建除了一个简单的 Controller。Controller 不需要在 main.go
中挂载,只需要在对应的 Router 下使用对应的 Controller 即可。
创建一个 Controller 我们要继承一个 beego.Controller
对象:
type MainController struct {
beego.Controller
}
之后我们可以复写其 Get()
方法:
func (c *MainController)