Go 配置

以 Markdown 格式查看

您可以在 generators.yml 中自定义 Go SDK 生成器的行为:

generators.yml
1groups:
2 go-sdk:
3 generators:
4 - name: fernapi/fern-go-sdk
5 version: 1.39.2
6 config:
7 packageName: acme
8 output:
9 location: local-file-system
10 path: ../generated/go
alwaysSendRequiredProperties
boolean

启用后,确保所有必需的属性始终包含在 API 请求中,即使它们有默认值或在实现中是可选的。

clientConstructorName
string

自定义客户端构造函数的名称。这允许您为用户调用以创建客户端新实例的函数指定自定义名称。

clientName
string

指定生成的客户端结构体的名称。这决定了用户在生成的 Go SDK 中将与之交互的主要客户端类型名称。

exportedClientName
string

设置将在代码片段和文档示例中使用的导出客户端名称。这对于自定义客户端在生成的文档中的显示方式很有用。

enableWireTests
stringDefaults to true

生成模拟服务器(wire)测试以验证 SDK 发送正确的 HTTP 请求并根据 API 规范正确处理响应。启用时,需要 Docker 作为运行时依赖来运行生成的测试。

importPath
string

如果您计划在项目中依赖生成的 Go SDK,而将其作为单独的、已发布的 Go 模块来依赖,请使用此选项。

如果您计划将生成的 Go SDK 作为单独的、已发布的 Go 模块分发,请使用 module 配置选项。

您可以使用以下 generators.yml 配置将 Go SDK 代码生成到 gen/go/api 包中:

1default-group: local
2groups:
3 local:
4 generators:
5 - name: fernapi/fern-go-sdk
6 version: 0.13.0
7 config:
8 importPath: github.com/<YOUR_ORGANIZATION>/<YOUR_REPOSITORY>/generated/go
9 output:
10 location: local-file-system
11 path: ../generated/go
您必须用 go.mod 路径中的相关元素更新 <YOUR_ORGANIZATION><YOUR_REPOSITORY> 占位符。在这种情况下,生成的 Go SDK 使用与您的 Go 模块其余部分相同的 go.mod 路径。
includeLegacyClientOptions
boolean

启用后,包含传统客户端选项以与较旧版本的 SDK 向后兼容。这对于在升级 SDK 版本时维护兼容性很有用。

inlineFileProperties
boolean

控制文件上传属性是否生成为内联请求属性而不是单独的参数。启用时,文件上传字段成为请求结构体的一部分,而不是作为单独的函数参数传递。

inlinePathParameters
boolean

启用后,路径参数内联到请求类型中,而不是作为单独的函数参数传递。这创建了一个更统一的请求结构,其中路径参数包含在请求对象中。

module
object

如果您计划将生成的 Go SDK 作为单独的、已发布的 Go 模块分发,请使用此选项。

如果您只计划在自己的 Go 模块中使用生成的 SDK,请使用 importPath 配置选项。

您可以使用以下 generators.yml 配置将 Go SDK 代码生成到单独的模块中(使用其自己的 go.mod 定义):

1default-group: local
2groups:
3 local:
4 generators:
5 - name: fernapi/fern-go-sdk
6 version: 0.13.0
7 config:
8 module:
9 path: github.com/<YOUR_ORGANIZATION>/<YOUR_REPOSITORY>
10 output:
11 location: local-file-system
12 path: ../generated/go

此配置将在目标输出位置与 Go SDK 代码的其余部分一起生成 go.mod。有了这个,生成的 Go SDK 中的 import 语句都从配置的模块路径解析。

默认情况下,生成的 go.mod 将设置为 1.13。您可以通过指定 version 键来覆盖此行为:

1default-group: local
2groups:
3 local:
4 generators:
5 - name: fernapi/fern-go-sdk
6 version: 0.13.0
7 config:
8 module:
9 path: github.com/<YOUR_ORGANIZATION>/<YOUR_REPOSITORY>
10 version: "1.19"
11 output:
12 location: local-file-system
13 path: ../generated/go

如果您想在本地依赖生成的 Go SDK(不将其作为单独的 Go 模块分发),并且您使用 module 配置选项,您需要修改项目的顶级 go.mod 以包含 replace 语句:

1module github.com/your/module
2
3require "github.com/your/sdk" v0.0.0
4replace "github.com/your/sdk" v0.0.0 => "path/to/generated/sdk"
packageLayout
'flat' | 'nested'

控制生成的包结构的组织方式。选择 ‘flat’ 以获得具有较少嵌套目录的扁平包结构,或选择 ‘nested’ 以获得镜像您的 API 结构的更分层的组织。

packageName
string

指定生成的 Go 代码的包名称。这决定了将出现在生成的 Go 文件顶部的包声明,并影响用户如何导入 SDK。

union
'v0' | 'v1'

控制联合类型生成策略。使用 ‘v0’ 表示传统的联合实现,或使用 ‘v1’ 表示更新、更健壮的联合处理方法,提供更好的类型安全和可判别联合支持。

useReaderForBytesRequest
boolean

启用后,使用 io.Reader 接口处理字节请求体,而不是字节切片。这对于大型负载更加内存高效,并遵循 Go 流式数据处理的最佳实践。