如何在AsyncApi中创建有效负载?

问题描述 投票:0回答:1

我的代码工作正常,但我需要

nestjs-asyncapi
swagger
中的文档帮助。在我的代码中,我在数组中有一个对象,但在文档中我只有一个对象。

enter image description here

这是我的 Nest js 装饰器:

@AsyncApiSub({
    channel: 'myChannel',
    description: 'Read all features - result',
    message: {
        name: 'getFeaturesResponse',
        payload: {
            type: () => Feature,
        },
        headers: AsyncApiHeaders.subHeaders(),
    },
})

现在我在 Async API studio 中创建了我的异步 API 的这一部分,一切看起来都很好,就像我想要的那样。但是,我不知道应该如何更新装饰器才能拥有

array<Object>

"Feature": {
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "idFeature": {
          "type": "string",
          "description": "unique id of Feature",
          "example": "example"
        },
      },
    },
    "required": [
      "idFeature",
      "name",
      "description"
    ]
  },

这就是我想要的:

enter image description here

我应该提供更多信息吗?我应该以某种方式重写整个装饰器还是只重写某些部分?

swagger nestjs asyncapi
1个回答
0
投票

我发现现在

nestjs-asyncapi
不知道该怎么做。因此,一种方法是更新执行此操作的脚本。

或者我选择其他选项。我将另一个 dto 作为数组添加到我的 dto 类中。两者都在同一个文件中。

export class Feature {
    @ApiProperty({
        type: 'string',
        description: 'unique id of Feature',
        example: 'a5f3252b-1007-449d-a75d-e99ecf88bc06',
    })
    @IsNotEmpty()
    @IsString()
    idFeature: string;

    constructor(
        idFeature: string,
    ) {
        this.idFeature = idFeature;
    }
}

export class FeatureArray {
    @ApiPropertyOptional({
        type: Feature,
        isArray: true,
        description: 'settings of Feature',
    })
    @ValidateNested({ each: true })
    @Type(() => Feature)
    @IsArray()
    featureArray: Feature[];

    constructor(
        feature: Feature[],
    ) {
        this.featureArray = feature;
    }
}

这是我代码中的装饰器:

    @AsyncApiSub({
        channel: 'myChannel',
        description: '',
        message: {
            name: 'Name',
            payload: {
                type: () => FeatureArray,
            },
            headers: AsyncApiHeaders.subHeaders(),
        },
    })

这是图像结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.