我正在尝试编写我的第一个 Asyncapi 文档文件。我想在 reusableModel 和其他人之间执行我的模式的可重用性。但是,html 文档预览为我提供了一个包含单独对象而不是一个统一对象的数组。这是我有问题的 yaml 内容:
asyncapi: 2.0.0
info:
title: woaw
version: 0.1.0
description: >
blabla
license:
name: UNLICENSED
defaultContentType: application/json
channels:
myChannel:
subscribe:
message:
oneOf:
- $ref: '#/components/messages/new'
- $ref: '#/components/messages/deleted'
components:
messages:
new:
payload:
$ref: '#/components/schemas/new'
deleted:
payload:
$ref: '#/components/schemas/deleted'
schemas:
reusableModel:
type: object
properties:
id:
type: string
format: uuid
example: 37a2005e-70e6-4cf3-b7e3-19e087879e50
new:
allOf:
- $ref: '#/components/schemas/reusableModel'
- type: object
properties:
type:
type: string
enum: ["extension.new"]
data:
type: object
properties:
key1:
type: object
properties:
users:
type: array
items:
type: string
deleted:
allOf:
- $ref: '#/components/schemas/reusableModel'
- type: object
properties:
type:
type: string
enum: ["extension.deleted"]
data:
type: object
properties:
key1:
type: string
您可以将其复制/粘贴到 https://playground/asyncapi.io 以查看渲染问题。在第一个 messageType(新)的有效负载中定义的 allOf 对象显示为一个数组,其中第 0 部分是可重用模型,第 1 部分是我的其余属性(类型 + 数据),而不是统一对象。该文档涉及以下内容:
AsyncAPI 规范允许使用 JSON Schema 的 allOf 属性组合和扩展模型定义,实际上提供了模型组合。allOf 接受一组对象定义,这些定义被独立验证但共同组成一个对象。
我想我误解了文档的某些部分,你能给我解释一下吗?