大家好啊,GoFrame
框架今天发布了v2.5.0
正式版本啦!👏👏👏👏
本次版本主要是对已有功能组件以及开发工具上的改进工作。其中:
gf gen ctrl
命令,以规范化定义、开发API接口,增加控制器、SDK的代码生成提高开发效率,以解决Golang
工程开发中接口层面的规范和效率问题,详情请参考:接口规范-gen ctrl。gf gen dao
命令新增了TypeMapping
特性,允许开发者自定义生成的数据表实体对象属性字段的Golang
类型:数据规范-gen dao其他变更内容请参考以下change log
。Enjoy!
🍺🍺🍺🍺🍺🍺🍺🍺
Github ChangeLog
:https://github.com/gogf/gf/releases/tag/v2.5.0
完整代码变更: v2.4.0...v2.5.0,感谢本次所有的贡献开发者:
gdb
ORM SQL
日志记录,操作的字段按照数据表字段定义顺序进行操作。HOOK
方法实现,支持修改in
参数的Table
字段后修改执行的表名。AllAndCount/ScanAndCount
方法,用于实现便捷的分页查询场景。Model.WhereOrNot/WhereOrPrefixNot
条件方法。gi18n
Unicode
)作为转译的键名。gclient
Discovery
链式操作方法,用于设置本次请求的服务发现组件。ghttp
Context
上下文处理,每次Context
的变更将会影响底层的http.Request
对象。以支持自定义HTTP Handler
的数据交互场景。Endpoints
配置项支持,用于自定义Server
的服务注册发现地址,而可以使用当前监听的地址。goai
OpenAPIv3
结果中进行标记。gsel
RoundRobin
实现中Endpoints
更新的锁机制问题。glog
TimeFormat
配置,用于自定义日志输出的时间格式:日志组件-配置管理Rotation
实现,支持短运行程序的日志文件切分。gtag
GetGlobalEnums
方法,用于获取全局注册的枚举类型。gutil
DumpJson
方法,用于将任意类型变量按照JSON
格式化打印到终端,便于人工阅读。gvalid
enums
校验规则,用于实现枚举类型的自动识别和校验:数据校验-校验规则contrib/registry/polaris
组件在多个服务端时的负载均衡问题。contrib/drivers/pgsql
在TableFields
返回的Index
字段序号统一从0
开始。contrib/nosql/redis
新增用户配置项支持。contrib/rpc/grpcx
组件,grpcx.Server
新增Endpoints
配置项支持,用于自定义服务注册发现的地址。contrib/sdk/httpclient
组件,用于本次版本新增的gf gen ctrl
命令生成的HTTP SDK
代码文件依赖库。contrib/trace/otlpgrpc
及contrib/trace/otlphttp
组件,用以实现基于OpenTelemetry
的链路跟踪统一对接组件。gf gen ctrl
命令,用于编译api
定义目录,自动生成规范的controller
、HTTP SDK
代码:接口规范-gen ctrlgf gen dao
命令,新增TypeMapping
特性,开发者可自定义数据表字段类型与生成的Go
实体数据结构属性类型映射,并且可以方便引入第三方包类型(如decimal
包以支持高精度类型):数据规范-gen daogf gen enums
命令,其中的Prefix
参数改为Prefixes
,以支持多个生成枚举类型的包前缀指定:枚举维护-gen enumsgf gen service
命令:service
文件中,增加方法注释生成。service
文件中存在import
冲突时,自动生成import alias
。gfcmd.Command
类型,便于开发者可以继承扩展自定义命令行功能。gf docker
命令,将构建文件参数设置为非必须(考虑兼容),未来将会只用于Docker
构建,不再耦合二进制构建功能。如果有完整构建需求,建议未来结合gf build
功能共同使用。并更新项目工程模板的make image
命令,使用gf build+gf docker
命令实现。gf init
命令,修复在部分场景下初始化项目覆盖已存在的.git/.gitignore
目录及文件问题或权限报错问题。gf up
命令,修复在部分场景下的框架版本更新问题,以及在windows
系统下的下载安装问题。gf version
命令,修复在部分场景下的框架版本识别问题。gf gen pbentity
命令,生成的proto
文件实体数据结构的float32/float64/[]byte
类型修改为float/double/bytes
类型。importPrefix
参数,如:gf gen dao/service
ghttp.Request
中的Context
及GetCtx
方法返回的context.Context
继承去掉了NeverDoneCtx
的嵌套,意味着控制器中默认传递的ctx
上下文对象完全继承于标准库的http.Request
中的ctx
。在请求结束时将会自动调用Done
方法结束掉,不能将该ctx
传播给需要进一步执行的异步流程。因此,从这个版本开始,使用者可能会遇到以下两个问题:r.SetCtx(r.GetNeverDoneCtx())
全局覆盖后续使用的ctx
为不会结束的ctx
。context canceled
的错误。这个属于正常现象,当客户端不在需要这个请求的结果时会取消请求,这时服务端继续往下执行也没有了意义。如果介意这个错误,可以参考上面的中间件增加NeverDoneCtx
的处理逻辑,这个时候服务端会忽略客户端的取消请求并继续往下执行。