typescript - Hvordan kan jeg ha flere DTO-er for NestJS Request Body/Swagger
så jeg har en rute som kan akseptere to forskjellige DTO-er. Jeg har problemer med å få disse to DTO-ene til å koble seg til/vises på Swagger. Jeg bruker Swagger-pluginen med NestJS. Jeg vet at i ren Swagger kan du gjøre noe sånt. Noen ideer?
Request:
oneOf:
- $ref: "#/components/schemas/RequestOneType"
- $ref: "#/components/schemas/RequestTwoType"
Ethvert eksempel på hva jeg har akkurat nå er som
async initApp(@Body() req: RequestOneDto | RequestTwoDto , @Res({ passthrough: true }) res: Response) {
}
eksporter klasse RequestOneDto { @Length(1,10); navn: string
@Max(10) verdi: nummer }
eksporter klasse RequestTwoDto { @Length(1,15); navn: string
@Max(15) verdi: nummer
state: 'New York' }
Svar #1
Har du prøvd denne måten?
@ApiExtraModels(RequestOneDto, RequestTwoDto)
@ApiBody({
schema: {
oneOf: [
{
$ref: getSchemaPath(RequestOneDto),
},
{
$ref: getSchemaPath(RequestTwoDto),
},
],
},
})
async initApp(@Body() body: RequestOneDto | RequestTwoDto) {}
Du kan importere ApiBody, ApiExtraModels fra @nestjs/swagger
Hvis du ikke vil inkludere modellene eksplisitt, kan du registrere dem på ett sted som
const document = SwaggerModule.createDocument(app, options, {
extraModels: [RequestOneDto, RequestTwoDto],
});
Og her er mer informasjon
