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]

相关文章
|
11天前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。
|
22天前
|
Cloud Native JavaScript API
一文读懂云原生 go-zero 微服务框架
一文读懂云原生 go-zero 微服务框架
|
8天前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
|
17天前
|
存储 算法 Go
|
17天前
|
编译器 Go 开发者
|
21天前
|
SQL JavaScript Go
Go Web 服务框架实现详解
Go Web 服务框架实现详解
|
21天前
|
运维 Shell Go
构建 Go 应用 docker 镜像的十八种姿势
构建 Go 应用 docker 镜像的十八种姿势
|
22天前
|
存储 Prometheus 中间件
2020最佳人气项目之Go Web框架
2020最佳人气项目之Go Web框架
|
7天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
35 10
|
5天前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。