大家好啊,GoFrame
框架今天发布了v2.4.0
正式版本啦!👏👏👏👏
该版本最大的亮点在于提供了微服务开发的功能特性、开发工具以及工程脚手架,并且提供了完善的微服务开发文档!!微服务的组件设计仍然以接口设计为主,以保证良好的灵活性和扩展性,接口维护在框架主库中;具体的接口实现仍然以务实为主,并在社区组件中提供了常用的接口实现。
其实该版本特性功能早已Ready
,但由于文档工作量较大,陆续花了1
个月左右才相对完善,因此版本的发布时间也相应做了调整。我们认为文档和代码同等重要,是发布里程碑不可分割的部分。我们知道怎么用好,也希望能告诉大家怎么用好,才能更务实地帮助到更多的开发者。这也是GoFrame
框架的文档能够逐步沉淀丰富的原因之一。此外,详尽的源码注释依旧英文为主,以帮助到海外使用者。官网文档仍然以中文为主,帮助到主要的大中国区开发团队。
赶快来看看我们都更新了什么东西吧!Enjoy!
🍺🍺🍺🍺🍺🍺🍺🍺
完整代码变更: v2.3.0...v2.4.0 ,感谢本次所有的贡献开发者:
正式发布微服务开发特性,并新增完整的微服务开发官网章节:微服务开发
gdb
Namespace
配置在pgsql
下未生效的问题。sqlite
数据库文件的问题:https://github.com/gogf/gf/issues/2435gerror.Wrap
后返回,以保证上层能获取底层自定义错误对象。unsigned
整形字段转换为了signed
整形类型的问题:https://github.com/gogf/gf/issues/2356Model
作为子查询参数的解析问题:https://github.com/gogf/gf/issues/2339Where
条件的未限制执行问题:https://github.com/gogf/gf/issues/2427gredis
garray
Filter
方法,用于自定义遍历并过滤数组元素项。RemoveValues
方法,支持按照参数值批量删除元素项。InsertBefore
方法,支持批量的参数插入能力。gmap
IsSubOf
方法,用于判断当前map
是否是指定map
的子集。gqueue
Len/Size
长度计算问题:https://github.com/gogf/gf/issues/2509Close
方法的并发安全问题:https://github.com/gogf/gf/issues/2015gclient
SetDiscovery
及SetBuilder
方法,允许调用者自定义客户端的服务发现及负载均衡接口实现。ghttp
Header/Cookie
中读取指定参数,支持规范路由中的in
标签定义读取Header/Cookie
(in:header/cookie
)。ResponseWriter
实现http.Flusher
接口,简化使用者的Stream
输出开发逻辑:数据返回-Stream返回r.GetRequestMap()
返回内容包含form-data
表单body
信息的问题:https://github.com/gogf/gf/issues/2261Request
的ctx
并新建支持链路跟踪的ctx
Request
的ctx
对象,并扩展该ctx
支持链路跟踪特性gcmd
AddObject
方法,允许直接将指定的*Command
或者规范编写的Object
对象添加为子级命令。gctx
GetInitCtx
方法缺失TraceID
的问题:上下文-gctxgfile
Temp
方法,保持基础逻辑实现与标准库os.TempDir
一致,避免单机多人协作时的临时目录冲突问题。gtimer
Quick
选项,用以实现是否在添加定时器时同时执行指定的回调方法。gconv
Scan
方法转换在部分场景下,如果属性为整型/浮点型数组时的转换失败问题:https://github.com/gogf/gf/issues/2391Interfaces
方法在属性为0的场景下,转换结构体直接返回[]
的问题:https://github.com/gogf/gf/issues/2395json tag
为,omitempty
不带变量名称的结构体转换问题。gvar.Var
类型转换为常见第三方包decimal.Decimal
类型失败的问题:https://github.com/gogf/gf/issues/2584Struct
方法,解决当结构体的属性类型为time.Time/*time.Time
,给定的转换值为非标准库支持的字符串如2022-12-15 16:11:34
而引发的转换失败问题:https://github.com/gogf/gf/issues/2371gtag
SetGlobalEnums/GetEnumsByType
方法,用以实现自动化的Golang Enums
管理。需要结合gf gen enums
命令使用。gutil
Dump
方法在个别场景下的空指针报错问题:https://github.com/gogf/gf/issues/2487gvalid
Field
字段,表示校验字段的名称,用以解决自定义校验错误提示的字段丢失问题:https://github.com/gogf/gf/issues/2499dm/mysql
组件,解决当时区配置中带有特殊字符(例如/
)的QueryEscape
问题。redis
组件配置中缺失的连接池配置参数。file
注册发现组件,用于本地基于文件的服务注册发现,通常用于单节点测试。etcd/polaris/zookeeper
实现细节,并完善单测用例。grpcx
微服务组件,用于grpc
通信协议的微服务开发:微服务开发gf gen pb
命令,用于编译proto
文件生成go pb
文件:协议编译-gen pbgf gen pbentity
命令,用于自动生成数据库表的proto
数据结构定义文件:数据表PB-gen pbentitygf gen enums
命令,用于解析指定目录go
文件,并根据enum
定义规范自动生成enums
数据文件,主要用于OpenAPI
接口文档展示(实验特性):枚举维护-gen enumsgf up
命令,增加自动升级工具CLI
的功能。gf gen service
命令,当方法注释后不再自动生成到接口定义文件中。gf build
命令,增加DumpENV
选项,用于控制在编译时是否打印编译使用的环境信息,默认关闭。gf docker
命令,增加Tag
选项,用以兼容旧版本。