aws/smithy-go

GitHub: aws/smithy-go

AWS 官方的 Smithy Go 代码生成器,用于从 Smithy 模型自动生成 Go 语言客户端、服务端及类型代码。

Stars: 252 | Forks: 76

# Smithy Go [![Go 构建状态](https://static.pigsec.cn/wp-content/uploads/repos/cas/16/1635d0f0d6de9c26ebcdff095027f7fe2319c1c877b4a50f6bcda638780c8ab7.svg)](https://github.com/aws/smithy-go/actions/workflows/go.yml)[![Codegen 构建状态](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/89f95f06bd3f88fcde35e4cafdd788c4452673171f09b79b676590413ff23300.svg)](https://github.com/aws/smithy-go/actions/workflows/codegen.yml) [Smithy](https://smithy.io/) 的 Go 代码生成器以及附带的 smithy-go runtime。 smithy-go runtime 需要 Go 1.24 或更高版本。 **警告:所有接口均可能发生变更。** ## :warning: 客户端 codegen 尚不稳定 此仓库中的客户端代码生成器为 aws-sdk-go-v2 提供支持。 任意的客户端生成,尽管在技术上是可行的,但仍处于开发的早期阶段: * 生成的客户端缺少某些最初在 SDK 侧实现的功能(例如重试) * 可能存在 bug * 生成的客户端公共 API 可能不稳定 如果您有兴趣使用客户端代码生成器,我们鼓励您进行试验,并通过 issue 与我们分享任何反馈。 ## 插件 此仓库实现了以下 Smithy 构建插件: | ID | GAV 前缀 | 描述 | |----|------------|-------------| | `go-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | 实现 Smithy 模型的 Go 客户端代码生成。 | | `go-server-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | 实现 Smithy 模型的 Go 服务端代码生成。 | | `go-shape-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | 实现 Smithy 模型的 Go shape 代码生成(仅限类型)。 | **注意:构建插件目前尚未发布到 mavenCentral。您必须将其发布到 mavenLocal 才能使构建插件对 Smithy CLI 可见。构件版本目前固定为 0.1.0。** ## `go-codegen` ### 配置 [`GoSettings`](codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/GoSettings.java) 包含了所有从 `smithy-build.json` 启用的设置以及辅助 方法和类型。为 `go-client-codegen` 启用的最新顶层属性 列表可以在 `GoSettings::from()` 中找到。 | 设置 | 类型 | 必填 | 描述 | |-----------------|---------|----------|-----------------------------------------------------------------------------------------------------------------------------| | `service` | string | 是 | 用于生成客户端的服务的 Shape ID。 | | `module` | string | 是 | `generated.json`(以及 `go.mod`,如果启用了 `generateGoMod` 的话)和 `doc.go` 中的模块名称。 | | `generateGoMod` | boolean | | 是否生成默认的 `go.mod` 文件。默认值为 `false`。 | | `goDirective` | string | | 模块的 [Go directive](https://go.dev/ref/mod#go-mod-file-go)。默认值为支持的最低 Go 版本。 | ### 支持的协议 客户端使用的协议由客户端 `Options` 上的 `Protocol` 字段配置。SDK 将根据应用于建模服务的协议特征配置默认值。 | 协议 | 备注 | |----------|-------| | [`smithy.protocols#rpcv2Cbor`](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html) | | | [`aws.protocols#restJson1`](https://smithy.io/2.0/aws/protocols/aws-restjson1-protocol.html) | | | [`aws.protocols#restXml`](https://smithy.io/2.0/aws/protocols/aws-restxml-protocol.html) | | | [`aws.protocols#awsJson1_0`](https://smithy.io/2.0/aws/protocols/aws-json-1_0-protocol.html) | | | [`aws.protocols#awsJson1_1`](https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html) | | | [`aws.protocols#awsQuery`](https://smithy.io/2.0/aws/protocols/aws-query-protocol.html) | | | [`aws.protocols#ec2Query`](https://smithy.io/2.0/aws/protocols/aws-ec2-query-protocol.html) | | ### 示例 此示例将 `go-codegen` 构建插件应用于通过 `smithy init` 创建的 Smithy 快速入门示例: ``` { "version": "1.0", "sources": [ "models" ], "maven": { "dependencies": [ "software.amazon.smithy.go:smithy-go-codegen:0.1.0" ] }, "plugins": { "go-codegen": { "service": "example.weather#Weather", "module": "github.com/example/weather", "generateGoMod": true, "goDirective": "1.24" } } } ``` ## `go-server-codegen` 此插件是一个正在开发中的功能,目前暂无文档。 ## `go-shape-codegen` 此插件是一个正在开发中的功能,目前暂无文档。 ## 许可证 本项目基于 Apache-2.0 许可证授权。
标签:Go, JS文件枚举, Ruby工具, Smithy, SOC Prime, 代码生成, 域名枚举, 开发工具, 接口定义语言, 日志审计, 渗透测试工具