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 时,最小值为独占(值必须大于 min)
为 true 时,最大值为独占(值必须小于 max)
值必须是此数字的倍数