체인의정석

Nest.js) Swagger에서 변수 optional하게 처리가 안될 경우 해결 방법 본문

개발/backend

Nest.js) Swagger에서 변수 optional하게 처리가 안될 경우 해결 방법

체인의정석 2021. 12. 13. 16:54
728x90
반응형

Controller 부분에서 아래와 같이 함수를 짜면 잘 보이지만 swagger에서는 잘 잡히지 않는다.

   @Param('ethAddress') ethAddress: string,
    @Query('쿼리파라미터1') 쿼리파라미터1?: string,
    @Query('쿼리파라미터2') 쿼리파라미터2?: string,
    @Query('쿼리파라미터3') 쿼리파라미터3?: number,

다음과 같이 optional 하게 주려고 해도 required로 나온다.

 

https://github.com/nestjs/nest/issues/2169

 

Please Add `optional: boolean` to @Query route param decorator · Issue #2169 · nestjs/nest

I'm submitting a... [x] Feature request Current behavior Using @Query('foo') will always make a query parameter required. Expected behavior The Query decorator should have an optional: ...

github.com

 

이를 해결하기 위해서는 optional:boolean 부분을 넣어주여야 한다고 한다.

 

@Query({ name: 'foo', optional: true })

위와 같이 진행해주거나

export class CreateUserDto {
  @ApiModelProperty()
  name: string;

  @ApiModelProperty()
  email: string;

  @ApiModelProperty({ required: false })
  password?: string;

  @ApiModelProperty({ required: false })
  confirmPassword?: string;
}

위와 같이 dto 레벨에서도 해줄 수 있다고 한다.

 

또한 아래와 같이 사용할 수도 있다고 한다.

@ApiImplicitQuery({
	name: 'foo',
	required: false,
	type: String
})
myMethod(@Query('foo') foo: string){

}

나는 맨 아래의 방법을 사용하여  이를 해결하였다.

728x90
반응형
Comments