Go 应用框架 beego 1.7.0,新增改进功能

简介:

beego 1.7.0 版本发布了。beego是一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra

新增改进功能:

  1. Filter访问速度提升7.5倍以上 #1799
  2. Gzip压缩的时候支持不同的level #1808
  3. ORM PK支持负数 #1810
  4. ORM 支持自定义自增ID的值 #1826
  5. Context 下载文件函数改进:下载文件之前先检查是否存在 #1827
  6. log增加 GetLogger函数,可以增加相应的前缀 #1832
package main

import "github.com/astaxie/beego/logs"

func main() {
    logs.Warn("this is a warn message")

    l := logs.GetLogger("HTTP")
    l.Println("this is a message of http")

    logs.GetLogger("orm").Println("this is a message of orm")

    logs.Debug("my book is bought in the year of ", 2016)
    logs.Info("this %s cat is %v years old", "yellow", 3)
    logs.Error(1024, "is a very", "good", 2.5, map[string]int{"id": 1})
    logs.Critical("oh my god")
}

image

  1. session增加Log,一旦错误发生可以记录日志. #1833
  2. logs包添加两个public函数,EnableFuncCallDepth和SetLogFuncCallDepth, 用来设置函数的调用层级. #1837
  3. 支持go run运行beego的项目代码 #1840
  4. 添加ExecuteTemplate函数,这样用户就可以通过这种方式访问template,而不是直接访问map,因为map有并发读写问题 #1848
  5. ORM 字段支持time类型 #1856
  6. ORM One接口只获取一条 #1874
  7. ORM支持json jsonb类型 #1875
  8. ORM默认使用text类型 #1879
  9. session配置三个配置,EnableSidInHttpHeader EnableSidInUrlQuery SessionNameInHttpHeader,
    允许用户可以在http头和URL中带sid #1897
  10. 自动化路由改进生成的文件名,之前太长了 #1924
  11. 支持复杂的模板引擎. ace jade #1940
beego.AddTemplateEngine("ace", func(root, path string, funcs template.FuncMap) (*template.Template, error) {
        aceOptions := &ace.Options{DynamicReload: true, FuncMap: funcs}
        aceBasePath := filepath.Join(root, "base/base")
        aceInnerPath := filepath.Join(root, strings.TrimSuffix(path, ".ace"))

        tpl, err := ace.Load(aceBasePath, aceInnerPath, aceOptions)
        if err != nil {
            return nil, fmt.Errorf("error loading ace template: %v", err)
        }

        return tpl, nil
    })
#1940
  1. session引擎支持ssdb #1953
  2. RenderForm支持输出required #1993
  3. 让打印的beego日志更加美观 #1997
    image
  4. ORM支持struct中带有time.Time指针 #2006
  5. Controller中增加 TplPrefix 这样就可以在baseController制定读取模板的前缀目录 #2030
  6. jsonb函数中增加js函数的判断,避免函数不存在时候出错. #2045
  7. ORM增加InsertOrUpdate函数 #2053
  8. Filter函数增加重置参数的参数. 因为beego.InsertFilter("*", beego.BeforeStatic, RedirectHTTP)
    的时候,参数会赋值给:splat,从而影响后续如果路由里面也有想用的路由,

那么就会引起冲突,因此增加这样的函数以方便用户重置。 #2085

  1. session包配置采用对象初始化,而抛弃传递json的方式. 如果独立使用session包的可能会引起兼容性问题#2096
  2. Swagger迁移到2.0版本,现在生产的代码无需依赖API,直接生产swagger.json

bugfix:

  1. 静态路由中/m自动跳转到/m/ #1792
  2. test的时候解析配置文件出错 #1794
  3. 文件rotato的时候产生race condition #1803
  4. 修复multiple response.WriteHeader calls的错误 #1805
  5. ORM 如果主键是uint的时候panic #1828
  6. 日志rotate的时候如果当前时间小于2000 panic #
  7. context重用导致XSRF重用#1863
  8. ORM InsertMulti的时候当是*类型时panic #1882
  9. task中任务在很微小的时间内可能存在执行多次的情况 #1909
  10. IE浏览器下载文件名混乱 #1912
  11. ORM DISTINCT实现 #1938
  12. Logs包里面设置文件的permit时候,int无法设置. #1948 #2003
  13. QueryRow 和 QueryRows 查询获取数据后外键字段不填充值 #1964
  14. 当beego应用跑在代理之后的时候,scheme通过X-Forwarded-Proto获取 #2050
  15. 静态文件访问目录时候跳转到目录/的时候自动带上参数 #2064

文章转载自 开源中国社区[http://www.oschina.net]

相关文章
|
8月前
|
人工智能 测试技术 Go
Go 语言的主流框架
本文全面解析了 Go 语言主流技术生态,涵盖 Web 框架、微服务、数据库工具、测试与部署等多个领域。重点介绍了 Gin、Echo、Beego 等高性能框架,以及 gRPC-Go、Go-Micro 等微服务组件。同时分析了 GORM、Ent 等 ORM 工具与测试部署方案,并结合场景提供选型建议,助力开发者构建高效稳定的 Go 应用。
2105 0
|
6月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
397 86
|
7月前
|
人工智能 监控 中间件
如何用go语言实现类似AOP的功能
本文介绍了如何在 Go 语言中借鉴 Java 的 AOP(面向切面编程)思想,通过 Gin 框架的中间件和函数包装机制实现日志记录、权限校验等横切关注点与业务逻辑的解耦。内容涵盖 AOP 的优点、Go 中的实现方式、Gin 中间件与 AOP 的异同,帮助开发者提升代码模块化与可维护性。
283 0
|
5月前
|
JavaScript 前端开发 Java
【GoWails】Go做桌面应用开发?本篇文章带你上手Wails框架!一步步带你玩明白前后端双端的数据绑定!
wails是一个可以让你使用Go和Web技术编写桌面应用的项目 可以将它看作Go的快并且轻量级的Electron替代品。可以使用Go的功能,并结合现代化UI完成桌面应用程序的开发
1093 5
|
5月前
|
开发框架 前端开发 Go
【GoGin】(0)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
Gin:Go语言编写的Web框架,以更好的性能实现类似Martini框架的APInet/http、Beego:开源的高性能Go语言Web框架、Iris:最快的Go语言Web框架,完备的MVC支持。
545 1
|
8月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
415 1
|
8月前
|
人工智能 Go
GO语言之泛型应用
本文介绍了Go语言中泛型的使用,包括为何引入泛型、泛型语法详解以及如何自定义约束。通过实例展示了泛型在简化代码、提高复用性方面的优势,并演示了泛型在slice、指针、map等数据类型中的应用。
223 1
|
8月前
|
存储 监控 算法
公司员工泄密防护体系中跳表数据结构及其 Go 语言算法的应用研究
在数字化办公中,企业面临员工泄密风险。本文探讨使用跳表(Skip List)数据结构优化泄密防护系统,提升敏感数据监测效率。跳表以其高效的动态数据处理能力,为企业信息安全管理提供了可靠技术支持。
174 0
|
Go 数据格式 XML
golang(2):beego 环境搭建
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46695513 转载请一定注明出处! 1,关于beego beego是一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra,支持如下特性 MVC,REST,智能路由,日志调试,配置管理,模板自动渲染,layout设计 中
1882 0
|
5月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
309 2