Goa v3.28.0 现已发布,此版本专注于更快地生成大型设计、更准确的 OpenAPI 安全输出以及与当前 Go 1.25 工具链的兼容性。
Highlights
- 代码生成现在避免了在生成的文件批次中重复进行导入重新计算,从而显著缩短了大型设计的生成时间。在下游测试中,完整的生成脚本运行时间从大约 46 秒缩短到大约 11 秒。#3932
- OpenAPI v2 和 v3 的生成现在会保留方法上的
NoSecurity()显式声明。 Public health 或 status endpoints 不再继承生成的 OpenAPI 文档中的全局安全要求。#3930
Fixes And Maintenance
- 生成的 HTTP 服务器关闭代码现在使用
context.WithoutCancel,因此 graceful shutdown 可在保留上下文值的同时避免继承取消操作,并通过了当前的gosec检查。#3929
- 在 Go 更新至 1.25 版本后,CI 现在能够针对模块所需的 Go 版本运行。#3931
- 发布准备工作还更新了 Goa、示例和插件中的依赖项元数据。
Upgrade Notes
此版本更改了 Goa 插件或其他导入该包的代码所使用的goa.design/goa/v3/codegen/service导出辅助函数:
service.AddServiceDataMetaTypeImports(header, svcExpr, data)现已更改为service.AddServiceDataMetaTypeImports(header, data)
service.AddUserTypeImports(genpkg, header, data)现已更改为service.AddUserTypeImports(header, data)
- 新的辅助函数
service.SetUserTypeImports(genpkg, data)会在将用户类型导入添加到 headers 之前对其进行一次计算。
调用这些辅助函数的插件应该在创建service.ServicesData后计算一次导入,然后在添加导入时只传递 header 和服务数据。
更多详情可查看:https://github.com/goadesign/goa/releases/tag/v3.28.0