Fern 定义中的类型
Fern 定义中的类型
类型描述了 API 的数据模型。
内置类型
自定义类型
在 Fern 中创建自定义类型非常简单!
对象
最常见的自定义类型是对象。
在 Fern 中,您使用 "properties" 键来创建对象:
这些表示 JSON 对象:
您还可以使用 extends 来组合对象:
您可以扩展多个对象:
别名
别名类型是对现有类型的重命名。这通常是为了清晰起见。
枚举
枚举表示具有一组允许值的字符串。
在 Fern 中,您使用 "enum" 键来创建枚举:
枚举名称仅限于 A-Z、a-z、0-9 和 _,以确保生成的代码能够在 Fern 可以输出的所有语言中编译。如果您的枚举不遵循此约定,您可以使用 "name" 键来指定自定义名称:
判别联合
Fern 支持标记联合(也称为判别联合)。联合对于多态性很有用。这类似于 OpenAPI 中的 oneOf 概念。
在 Fern 中,您使用 "union" 键来创建联合:
在 JSON 中,联合具有判别属性来区分联合的不同成员。默认情况下,Fern 使用 "type" 作为判别属性:
您可以使用 “discriminant” 键自定义判别属性:
这对应于这样的 JSON 对象:
非判别联合
非判别联合类似于判别联合,但是您不需要定义显式的判别属性。
泛型
Fern 支持浅层泛型对象,以最小化代码重复。您可以这样定义泛型以供重用:
现在,您可以将泛型类型实例化为类型别名:
现在您可以像使用任何其他类型一样自由使用此类型!注意,生成的代码不会使用泛型。上面的示例将在 typescript 中生成为:
为类型添加文档
您可以为类型添加文档。这些文档会传递给编译器,在生成的输出中非常有用(例如,SDK 中的文档字符串)。
验证类型
您可以为类型(别名和引用)添加验证约束,以确保数据完整性。这些验证约束存在于您的 API 定义中,并由服务器强制执行,但生成的客户端 SDK 不包含验证逻辑。
字符串验证参考
字符串类型支持多种验证约束。
所需的最小字符数
允许的最大字符数
字符串必须匹配的正则表达式模式
字符串格式规范(例如:“email”、“uri”、“date-time”)
数字验证参考
数字类型(包括 integer、long 和 double)支持多种验证约束。
最小值(默认为包含)
最大值(默认为包含)
当为 true 时,最小值为排他(值必须大于最小值)
当为 true 时,最大值为排他(值必须小于最大值)
值必须是此数字的倍数