go语言开发web框架beego
beego环境部署
部署前,先确认好golang已安装并配置完GOROOT、GOPATH;还需安装好git版本编排工具(sudo apt-get install git)并配置好环境变量,后面下载beego使用命令go get github.com/astaxie/beego需要用到git和go等
配置好go和git后,正式部署beego环境,linux和windows环境部署类似:
#从github上下载beego和bee工具 go get -v -u github.com/astaxie/beego go get -v -u github.com/beego/bee #安装bee后,会将bee命令放在GOPATH/bin路径下,所以还要配置bee的环境变量 vim .profile export PATH=/usr/local/go/bin/:$PATH export GOPATH=$HOME/go export PATH=$GOPATH/bin/:$PATH source .profile #快速建立一个应用来检测安装 cd $GOPATH/src bee new hello #这个命令在任何目录下执行都会在$GOPATH/src下创建应用 cd hello bee run #这个命令必须在要运行应用的目录下执行,只有进入应用,才可执行main.go
路由设置
固定路由:也就是全匹配的路由。一个固定的路由,一个控制器,然后根据用户请求方法不同请求控制器中对应的方法,使用beego默认的请求方法,用户 Get 请求就执行 Get 方法,Post 请求就执行 Post 方法。
beego.Router("/", &controllers.MainController{})
beego.Router("/admin", &admin.UserController{})
beego.Router("/admin/index", &admin.ArticleController{})
beego.Router("/admin/addpkg", &admin.AddController{})
正则路由:为了更加方便的路由设置,beego 参考了 sinatra 的路由实现,支持多种方式的路由
beego.Router(“/api/?:id”, &controllers.RController{})
默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”
beego.Router(“/api/:id”, &controllers.RController{})
默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”,但URL”/api/“匹配失败
beego.Router(“/api/:id([0-9]+)“, &controllers.RController{})
自定义正则匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”
beego.Router(“/user/:username([\\w]+)“, &controllers.RController{})
正则字符串匹配 //例如对于URL”/user/astaxie”可以匹配成功,此时变量”:username”值为”astaxie”
beego.Router(“/download/*.*”, &controllers.RController{})
*匹配方式 //例如对于URL”/download/file/api.xml”可以匹配成功,此时变量”:path”值为”file/api”, “:ext”值为”xml”
beego.Router(“/download/ceshi/*“, &controllers.RController{})
*全匹配方式 //例如对于URL”/download/ceshi/file/api.json”可以匹配成功,此时变量”:splat”值为”file/api.json”
beego.Router(“/:id:int”, &controllers.RController{})
int 类型设置方式,匹配 :id为int 类型,框架帮你实现了正则 ([0-9]+)
beego.Router(“/:hi:string”, &controllers.RController{})
string 类型设置方式,匹配 :hi 为 string 类型。框架帮你实现了正则 ([\w]+)
beego.Router(“/cms_:id([0-9]+).html”, &controllers.CmsController{})
带有前缀的自定义正则 //匹配 :id 为正则类型。匹配 cms_123.html 这样的 url :id = 123
例如匹配正则:beego.Router(“/cms_:id:int.html”,&controllers.IndexController{}),对应的逻辑控制端代码如下
#正则路由配置:
#说明下,如果路由中使用了自定义方法的话,那么默认的get(),post()方法都要重新声明
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/index/?cmd_:id:int.html", &controllers.IndexController{},"get:GetShow;post:Post")
}
#逻辑控制端配置:
func (t *IndexController) GetShow(){
t.Data["name"] = "index"
t.Data["gender"] = "male"
t.Data["hello"] = "world"
t.TplName = "index.html"
name := t.GetString(":name")
beego.Info("name=",name)
}
func (t *IndexController) Post(){
t.Data["name"] = "blockchain"
t.TplName = "index.html"
}
#假如用户在前端输入http://localhost:8080/index/cmd_123.html
#在goland IDE控制台获取到name健的输出为:
2019/01/16 19:23:02.394 [I] [default.go:21] name= 123
浙公网安备 33010602011771号