我正在尝试编写我的第一个Asyncapi文档文件。我想在可重用模型和其他模型之间实现模式的可重用性。但是,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(new(的有效负载中定义的allOf对象显示为一个数组,在第0部分中为reusableModel,在第1部分中为我的其余属性(类型+数据(,而不是统一对象。文件包括以下内容:
AsyncAPI规范允许使用JSON Schema的allOf属性组合和扩展模型定义,实际上提供了模型组合。allOf接受一组对象定义,这些定义经过独立验证,但共同组成一个对象
我想我误解了文件的某些部分,你能解释一下吗?
正如我所评论的,它看起来像是一个已知的问题:
https://github.com/asyncapi/html-template/issues/11