typescript - Hur kan jag tillhandahålla flera Swagger-exempel inuti en DTO med NestJS?
Jag har en DTO som har flera egenskaper, inklusive creditCard<CreditCardDto>, creditCardToken<CreditCardTokenDto>, googlePay<GooglePayDto>, applePay<ApplePayDto>. Endast en av dessa egenskaper kan finnas åt gången, så jag skulle vilja tillhandahålla fyra Swagger-exempel som detta för varje scenario.
Just nu ser min DTO ut så här, med några utkommenterade rader som visar vad jag har försökt. Det verkar som om detta borde vara möjligt, men jag måste missa något. Några idéer?
// [...]
// @ApiExtraModels(CreditCardDto, CreditCardTokenDto, ApplePayDto, GooglePayDto)
@ApiPropertyOptional({
examples: {
CreditCardDto: { value: CreditCardDto },
CreditCardTokenDto: { value: CreditCardTokenDto },
ApplePayDto: { value: ApplePayDto },
GooglePayDto: { value: GooglePayDto },
},
// example: ['foo', 'CreditCardTokenDto'],
description: 'Contains information about credit card.',
})
@IncompatibleWith(['creditCardToken', 'applePay', 'googlePay'])
@ValidateNested()
@Type(() => CreditCardDto)
@IsOptional()
creditCard?: CreditCardDto;
@ApiPropertyOptional({
examples: {
CreditCardDto: { value: CreditCardDto },
CreditCardTokenDto: { value: CreditCardTokenDto },
ApplePayDto: { value: ApplePayDto },
GooglePayDto: { value: GooglePayDto },
},
// example: CreditCardTokenDto,
description: 'Contains information about credit card token.',
})
@IncompatibleWith(['creditCard', 'applePay', 'googlePay'])
@ValidateNested()
@Type(() => CreditCardTokenDto)
@IsOptional()
creditCardToken?: CreditCardTokenDto;
@ApiPropertyOptional({
examples: {
CreditCardDto: { value: CreditCardDto },
CreditCardTokenDto: { value: CreditCardTokenDto },
ApplePayDto: { value: ApplePayDto },
GooglePayDto: { value: GooglePayDto },
},
// example: ApplePayDto,
description: 'Contains information about Apple Pay.',
})
@IncompatibleWith(['creditCard', 'creditCardToken', 'googlePay'])
@ValidateNested()
@Type(() => ApplePayDto)
@IsOptional()
applePay?: ApplePayDto;
@ApiPropertyOptional({
examples: {
CreditCardDto: { value: CreditCardDto },
CreditCardTokenDto: { value: CreditCardTokenDto },
ApplePayDto: { value: ApplePayDto },
GooglePayDto: { value: GooglePayDto },
},
// example: GooglePayDto,
description: 'Contains information about Apple Pay.',
})
@IncompatibleWith(['creditCard', 'creditCardToken', 'applePay'])
@ValidateNested()
@Type(() => GooglePayDto)
@IsOptional()
googlePay?: GooglePayDto;
}