728x90
반응형
728x170

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

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

 

위와 같이 optional 하게 주려고 해도 스웨거 상에서 필수값으로 지정 되버리더라구요.

 

해결 방법은 아래 깃허브 링크를 클릭하면 찾을 수 있습니다.

 

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
})

 

저는 dto 단에서 수정해야하는 문제가 아닌 controller단에서 수정해야 하는 문제였기 때문에 아래의 형태로 문제를 해결했습니다.

  @ApiQuery({ name: '쿼리파라미터1', required: false })
  @ApiQuery({ name: '쿼리파라미터2', required: false })
  @ApiQuery({ name: '쿼리파라미터3', required: false })

728x90
반응형
그리드형
Bami