发布于 2014-06-20 04:29:16 | 329 次阅读 | 评论: 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