Skip to main content
当你的 API 接受多种数据格式、包含条件字段或采用继承模式时,OpenAPI 的 schema 组合关键字可帮助你为这些灵活的结构编写文档。通过 oneOfanyOfallOf,你可以描述既能处理不同输入类型、又能将多个 schema 组合成完整数据模型的 API。

oneOf, anyOf, allOf 关键字

对于复杂数据类型,OpenAPI 提供了用于组合 schema 的关键字:
  • allOf:将多个 schema 组合在一起(如合并对象或扩展基础 schema),相当于 and 运算符。
  • anyOf:接受与任一提供的 schema 匹配的数据,相当于 or 运算符。
  • oneOf:接受与提供的 schema 中恰好一个匹配的数据,相当于 exclusive-or 运算符。
Mintlify 对 oneOfanyOf 采用相同的处理方式,因为它们在实际使用中很少对 API 产生影响。
有关这些关键字的详细规范,请参阅 OpenAPI 文档
not 关键字目前不受支持。

使用 allOf 组合模式(schema)

当你使用 allOf 时,Mintlify 会对你的 OpenAPI 文档进行预处理,以更易读的方式展示复杂的组合。例如,当你用 allOf 合并两个对象模式(schema)时,Mintlify 会将两者的属性合并到一个对象中。这在利用 OpenAPI 的可复用组件时尤其有用。
object

anyundefined 类型

类型为 anyundefined 的字段渲染方式与 oneOf 模式相同,会提供一个选择器,让用户在发送请求前选择一个具体的形态。这样即使模式没有将值限定为单一类型,API playground 仍能呈现有意义的输入。

使用 oneOfanyOf 提供选项

当你使用 oneOfanyOf 时,这些选项显示在一个带标签页的容器中。在每个子模式中指定一个 title 字段,为你的选项命名。例如,你可以这样展示两种不同类型的收货地址:
object
string
住址的街道信息