beego 1.2.0 版本发布,Go 应用框架 - 开源中国社区
beego 1.2.0 版本发布,Go 应用框架
astaxie 2014年05月17日

beego 1.2.0 版本发布,Go 应用框架

astaxie astaxie 发布于2014年05月17日 收藏 27 评论 33

免费体验IBM Cloud,构建Iot应用 >>>  

大家好,经过我们一个多月的努力,今天我们发布一个很帅的版本,之前性能测试框架出来beego已经跃居Go框架第一了,虽然这不是我们的目标,我们的目标是做最好用,最易用的框架.http://www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=json 但是这个版本我们还是在性能和易用性上面做了很多改进.应该说性能更加的接近Go原生应用.

新特性:

1.namespace支持

 beego.NewNamespace("/v1"). Filter("before", auth). Get("/notallowed", func(ctx *context.Context) { ctx.Output.Body([]byte("notAllowed")) }). Router("/version", &AdminController{}, "get:ShowAPIVersion"). Router("/changepassword", &UserController{}). Namespace( beego.NewNamespace("/shop"). Filter("before", sentry). Get("/:id", func(ctx *context.Context) { ctx.Output.Body([]byte("notAllowed")) }))

上面这个代码支持了如下这样的请求URL

  • GET /v1/notallowed

  • GET /v1/version

  • GET /v1/changepassword

  • POST /v1/changepassword

  • GET /v1/shop/123

而且还支持前置过滤,条件判断,无限嵌套namespace

2.beego支持更加自由化的路由方式

RESTFul的自定义函数

  • beego.Get(router, beego.FilterFunc)

  • beego.Post(router, beego.FilterFunc)

  • beego.Put(router, beego.FilterFunc)

  • beego.Head(router, beego.FilterFunc)

  • beego.Options(router, beego.FilterFunc)

  • beego.Delete(router, beego.FilterFunc)

beego.Get("/user", func(ctx *context.Context) { ctx.Output.Body([]byte("Get userlist")) })

更加自由度的Handler

  • beego.Handler(router, http.Handler)

可以很容易的集成其他服务

import ( "http" "github.com/gorilla/rpc" "github.com/gorilla/rpc/json" ) func init() { s := rpc.NewServer() s.RegisterCodec(json.NewCodec(), "application/json") s.RegisterService(new(HelloService), "") beego.Handler("/rpc", s) }

3.支持从用户请求中直接数据bind到指定的对象

例如请求地址如下

?id=123&isok=true&ft=1.2&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&user.Name=astaxie
var id int ctx.Input.Bind(&id, "id") //id ==123 var isok bool ctx.Input.Bind(&isok, "isok") //isok ==true var ft float64  
ctx.Input.Bind(&ft, "ft") //ft ==1.2 ol := make([]int, 0, 2) ctx.Input.Bind(&ol, "ol") //ol ==[1 2] ul := make([]string, 0, 2) ctx.Input.Bind(&ul, "ul") //ul ==[str array] user struct{Name} ctx.Input.Bind(&user, "user") //user =={Name:"astaxie"}

4.优化解析form的流程,让性能更加提升

5.增加更多地testcase进行自动化测试

6.admin管理模块所有的增加可点击的链接,方便直接查询

7.session的除了memory之外的引擎支持struct存储

8.httplib支持文件直接上传接口

b:=httplib.Post("http://beego.me/") b.Param("username","astaxie") b.Param("password","123456") b.PostFile("uploadfile1", "httplib.pdf") b.PostFile("uploadfile2", "httplib.txt") str, err := b.String() if err != nil { t.Fatal(err) }

httplib支持自定义协议版本

9.ORM支持struct中有unexport的字段

10.XSRF支持controller级别控制是否启用, 之前XSRF是全局设置只要开启了就会影响所有的 POST PUT DELET请求,但是项目中可能API和页面共存的情况,页面可能不需要类似的XSRF,因此支持在Prepare函数中设置值来控制controller是否启用XSRF. 默认是true,也就是根据全局的来执行.用户可以在prepare中设置是否关闭.

func (a *AdminController) Prepare(){ a.EnableXSRF = false }

11.controller支持ServeFormatted函数,支持根据请求Accept来判断是调用ServeJson还是ServeXML

12.session提供memcache引擎

13.Context中的Download函数支持自定义文件名提供下载

bug修复

  1. session的Cookie引擎修复无法设置过期的bug

  2. 修复flash数据的存储和解析问题

  3. 修复所有go vet出现的问题

  4. 修复ParseFormOrMulitForm问题

  5. 修复只有POST才能解析raw body,现在支持除了GET和HEAD之外的其他请求

  6. config模块修复xml和yaml无法解析的问题

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:beego 1.2.0 版本发布,Go 应用框架
分享
评论(33)
最新评论
0

引用来自“xdeng”的评论

开发文档 也得更新一下啊。。。 对于初学者文档很重要的!!!
昨天已经全部更新到官网了
0
开发文档 也得更新一下啊。。。 对于初学者文档很重要的!!!
0
支持
0

引用来自“UlricQin”的评论

嗯,越来越好了,赞一个

引用来自“FoxHu”的评论

你现在入职小米了啊?主要负责哪一块啊?感觉小米的网站都是php,不是用go啊,这是被爆拖库也是因为小米使用了discuz!

引用来自“UlricQin”的评论

我负责运维开发,偏后端,不涉及业务,小米电商用php多一些,其他的主要是java。
哦,谢谢!步步高升!
0
持续关注
0

引用来自“Risol”的评论

我一直在用

引用来自“astaxie”的评论

多提一些你们想要的需求,还有使用过程中那些不爽的地方,我们争取一个月发布一个版本,快速的迭代的改进

引用来自“朝闻道”的评论

不好意思,我想知道这是你的全职工作吗?你这个框架卖钱吗?是怎样做到持续发展的呢?请教这些是因为我也有很多想法,但是除了上班之外,根本无力做任何事情。

引用来自“astaxie”的评论

我的全职工作是另外的,做框架是我的兴趣,不卖钱,我都是利用业余时间在做,持续发展就看你的兴趣在哪里了.你没办法做是因为你的兴趣还不够大,talk is cheap, just do it.
赞一个
0

引用来自“UlricQin”的评论

嗯,越来越好了,赞一个

引用来自“FoxHu”的评论

你现在入职小米了啊?主要负责哪一块啊?感觉小米的网站都是php,不是用go啊,这是被爆拖库也是因为小米使用了discuz!
我负责运维开发,偏后端,不涉及业务,小米电商用php多一些,其他的主要是java。
0
mark
0

引用来自“Risol”的评论

我一直在用

引用来自“astaxie”的评论

多提一些你们想要的需求,还有使用过程中那些不爽的地方,我们争取一个月发布一个版本,快速的迭代的改进

引用来自“朝闻道”的评论

不好意思,我想知道这是你的全职工作吗?你这个框架卖钱吗?是怎样做到持续发展的呢?请教这些是因为我也有很多想法,但是除了上班之外,根本无力做任何事情。

引用来自“astaxie”的评论

我的全职工作是另外的,做框架是我的兴趣,不卖钱,我都是利用业余时间在做,持续发展就看你的兴趣在哪里了.你没办法做是因为你的兴趣还不够大,talk is cheap, just do it.
前面这位@朝闻道 钱不是你想象的这样子。如果谁都知道做一件事情准能赚钱。那个个是老板了。而你认为1件事情****
0

引用来自“该用户已被和谐”的评论

版本更新太快了。
这个更新还快啊,你希望的框架是一年已更新的框架吗?
0
版本更新太快了。
0
支持
0
非常牛B的框架,顶起来~
0
忘记说了,bee工具也升级了现在支持version命令,可以获取bee/beego/go的版本

bee version
bee :1.0.1
beego :1.2.0
Go :go version go1.2.2 darwin/amd64
0
不明觉厉的啊
0

引用来自“UlricQin”的评论

嗯,越来越好了,赞一个
你现在入职小米了啊?主要负责哪一块啊?感觉小米的网站都是php,不是用go啊,这是被爆拖库也是因为小米使用了discuz!
0
支持!
0
嗯,越来越好了,赞一个
0

引用来自“Risol”的评论

我一直在用

引用来自“astaxie”的评论

多提一些你们想要的需求,还有使用过程中那些不爽的地方,我们争取一个月发布一个版本,快速的迭代的改进

引用来自“朝闻道”的评论

不好意思,我想知道这是你的全职工作吗?你这个框架卖钱吗?是怎样做到持续发展的呢?请教这些是因为我也有很多想法,但是除了上班之外,根本无力做任何事情。
我的全职工作是另外的,做框架是我的兴趣,不卖钱,我都是利用业余时间在做,持续发展就看你的兴趣在哪里了.你没办法做是因为你的兴趣还不够大,talk is cheap, just do it.
0
支持
顶部