Swagger에서 DTO를 이용해 서버 응답 값을 정의하는 기능이 있는데 직접 가져오는게 아닌 경로를 작성해주면 해당 경로에 있는 클래스를 가져와 붙여주는 기능이 있다. 경로는 분명히 맞는데 안되는 경우가 있어서 정리해둔다.
해결 방법은 간단하다. 아래처럼 createDocument의 extraModels에 추가로 정의 해주면 된다.
const document = SwaggerModule.createDocument(app, options, {
extraModels: [
DogCreateDTO,
DogUpdateDTO
],
});
SwaggerModule.setup("api-docs", app, document, {
swaggerOptions: {
defaultModelsExpandDepth: -1,
persistAuthorization: true,
},
});
실제로 사용하는 시점에서는 아래처럼 사용하면 된다.
@ApiResponse({
status: 200,
isArray: true,
description: "Successful response",
schema: {
type: "object",
properties: {
statusCode: { type: "string" },
res_code: { type: "string" },
data: {
type: "array",
items: {
anyOf: [
{ $ref: getSchemaPath(DogCreateDTO) }, // 이렇게 사용하면 된다.
],
},
},
},
},
})
'Web Programming > NestJS' 카테고리의 다른 글
[NestJS] NestJS Websocket [1] (1) | 2022.09.30 |
---|---|
[NestJS] Mongoose Cache 적용 (0) | 2022.04.25 |
[mongoose] 인덱스 생성 그런데 이제 NestJS에서 (0) | 2022.02.23 |
[NestJS] AWS Elastic BeanStalk 배포 (0) | 2022.02.23 |
[NestJS] string을 mongo ObjectId로 변경하기 (0) | 2022.02.23 |