官方文档:https://beego.me/docs/mvc/controller/router.mdhtml
什么是路由设置呢?前面介绍的 MVC 结构执行时,介绍过 beego 存在三种方式的路由:固定路由、正则路由、自动路由,接下来详细的讲解如何使用这三种路由。git
在介绍这三种 beego 的路由实现以前先介绍 RESTful,咱们知道 RESTful 是一种目前 API 开发中普遍采用的形式,beego 默认就是支持这样的请求方法,也就是用户 Get 请求就执行 Get 方法,Post 请求就执行 Post 方法。所以默认的路由是这样 RESTful 的请求方式。github
这里写两个控制器base.go 和mian.goweb
base.goapi
package controllers
import (
"github.com/astaxie/beego"
)
type BaseController struct {
beego.Controller
}
func (this *BaseController) Get() {
this.Data["Website"] = "beego.me"
this.Data["Email"] = "astaxie@gmail.com"
this.TplName = "main/index.html"
}
func (this *BaseController) Post() {
this.Ctx.WriteString("This is Post request this") // echo
}
main.gobash
package controllers
type MainController struct {
BaseController
}
上面的代码显示首先咱们声明了一个控制器 BaseController
,这个控制器里面内嵌了 beego.Controller
,这就是 Go 的嵌入方式,也就是 BaseController
自动拥有了全部 beego.Controller
的方法。同时控制器 MainController
,里面内嵌了 BaseController
,这也就是 MainController
自动拥有了全部 BaseController
的方法(新增的Get() 和Post() 方法)mvc
配置路由 router.gopost
package routers
import (
"webcodec/controllers"
"github.com/astaxie/beego"
)
func init() {
// GET 请求
beego.Router("/", &controllers.MainController{}, "get:Get")
// POST 请求 http://127.0.0.1:8080/api/list
beego.Router("/api/list",&controllers.MainController{},"post:Post")
}
说明:使用GET 请求方式请求Get() 方法,同理使用POST 请求方式请求Post() 方法。若是使用Get请求方式去请求Post()方法,则会提示(匹配不上):this
Web页面请求结果spa
使用PostMan 模拟Post请求