0

我正在尝试编写我的第一个 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 接受一组对象定义,这些定义被独立验证但共同组成一个对象。

我想我误解了文档的某些部分,你能给我解释一下吗?

4

1 回答 1

1

正如我所评论的,它看起来像一个已知问题:

https://github.com/asyncapi/html-template/issues/11

于 2021-01-08T11:03:24.063 回答