반응형
Swagger에서 parameters(매개변수)의 타입
* Parameter(매개변수)의 속성 유형을 명시적으로 설정하려면 type키를 사용한다.
@ApiProperty({
type: Number,
})
age: number;
물론 명시적으로 타입을 작성하지 않아도 Swagger 모델에 타입이 명시되기는 한다.
export class CreateUserDto {
@ApiProperty({ type: Number })
name: string;
@ApiProperty({})
age: number;
@ApiProperty({ type: String })
major: string;
}
위와 같은 코드가 있다면 Swagger에서 표시될 때,
해당 Swagger에서 알 수 있듯이
@ApiProperty({})
age: number;
위와 같이 선언을 해도 type이 나오기는 한다.
@ApiProperty({ type: Number })
name: string;
@ApiProperty({ type: String })
major: string;
@ApiProperty에 type키를 사용하는데 name속성이 SwaggerSchema(모델)에서 number로 출력되는 것을 보면 @ApiProeprty의 type속성이 typeScript에서 타입지정보다 우선순위가 높게 Swagger에 반영된다는 것을 알 수 있다.
1. 실제 NestJS내부에서는 name은 string으로 읽는다.
2. Swagger 문서에서는 name은 number이다.
3. 속성이 실제로 동작하는 타입과 형상관리되는 문서에서 명시된 타입이 다르다.
4. 이는 큰 문제이므로 두 타입을 통일시키도록 하자.
반응형
'개발 프레임워크 > NestJS' 카테고리의 다른 글
[NestJS] Swagger 문서 모듈 별로 분리 (0) | 2023.02.14 |
---|---|
[NestJS] 타입 종류_Swagger (0) | 2023.02.10 |
[NestJS] Parameters(매개변수)_Swagger (0) | 2023.02.08 |
[NestJS] Security(보안) (0) | 2023.02.07 |
[NestJS] OpenAPI 데코레이터 종류 (0) | 2023.02.07 |
댓글