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