发布于 2014-06-20 04:29:16 | 356 次阅读 | 评论: 0 | 来源: 网友投递
Beego Go应用框架
beego是一个开源的用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra,
经过了一个多月的开发,我们很高兴的宣布,beego1.3.0来了,这个版本我们做了非常多好玩并且有用的功能
这一次路由进行了全部改造,从之前的三个路由模式,改成了tree路由,第一性能得到了提升,第二路由支持的格式更加丰富,第三路由更加符合我们的思考方式,
例如现在注册如下路由规则:
/user/astaxie
/user/:username
如果你的访问地址是/user/astaxie,那么优先匹配固定的路由,也就是第一条,如果访问是/user/slene,那么就匹配第二个,和你注册的路由的先后顺序无关
设计namespace主要是为了大家模块化设计的,之前是采用了类似jQuery的链式方式,当然新版本也是支持的,但是由于gofmt的格式无法很直观的看出来整个路由的目录结构,所以我采用了多参数注册方式,现在看上去就更加的优雅:
ns :=
beego.NewNamespace("/v1",
beego.NSNamespace("/shop",
beego.NSGet("/:id", func(ctx *context.Context) {
ctx.Output.Body([]byte("shopinfo"))
}),
),
beego.NSNamespace("/order",
beego.NSGet("/:id", func(ctx *context.Context) {
ctx.Output.Body([]byte("orderinfo"))
}),
),
beego.NSNamespace("/crm",
beego.NSGet("/:id", func(ctx *context.Context) {
ctx.Output.Body([]byte("crminfo"))
}),
),
)
更多详细信息请参考文档:namespace
更多请参考文档:注解路由
自动化文档一直是我梦想中的一个功能,这次借着公司的项目终于实现了出来,我说过beego不仅仅要让开发API快,而且让使用API的用户也能快速的使用我们开发的API,这个就是我开发这个项目的初衷。
可以通过注释自动化的生成文档,并且在线测试,详细的请看下面的截图

而且可以通过文档进行API的测试:

更多请参考文档:自动化文档
在配置文件里面支持section,可以有不同的Runmode的配置,默认优先读取runmode下的配置信息,例如下面的配置文件:
appname = beepkg httpaddr = "127.0.0.1" httpport = 9090 runmode ="dev" autorender = false autorecover = false viewspath = "myview" [dev] httpport = 8080 [prod] httpport = 8088 [test] httpport = 8888
上面的配置文件就是在不同的runmode下解析不同的配置,例如在dev模式下,httpport是8080,在prod模式下是8088,在test模式下是8888.其他配置文件同理。解析的时候优先解析runmode下地配置,然后解析默认的配置。
config := tls.Config{
ClientAuth: tls.RequireAndVerifyClientCert,
Certificates: []tls.Certificate{cert},
ClientCAs: pool,
}
config.Rand = rand.Reader
beego.BeeApp.Server.TLSConfig = &config
beego.Run() 默认执行HttpPort
beego.Run(":8089")
beego.Run("127.0.0.1:8089")
{{config returnType key defaultValue}} {{config "int" "httpport" 8080}}
静态文件目录循环跳转
fix typo