@Get(':id')
@ApiParam({ name: 'id', description: 'user id' })
...
async listCourt(
@User() user: UserModel,
@Param('is') is: string,
):
위에 코드를 보면서 문득 의문이 들었다.
User 는 custom param 인데 @ApiParam 으로 잡아야하나?
참고로 @User()
는 createParamDecorator()
를 통해서 만든 custom Param decorator 이다. 결론은 그럴 필요 없다
이에 대한 설명으로는 똑똑이 gpt 선생의 대답으로 대신하겠다.
커스텀 데코레이터를 사용하는 경우에는 @ApiParam()을 사용하지 않습니다. @ApiParam()은 경로 매개변수에 대한 문서화를 위한 것이며, 커스텀 데코레이터의 경우 해당 데코레이터 자체가 로직을 가지고 있기 때문에 @ApiParam()을 추가할 필요가 없습니다.
다시 말씀드리면, 커스텀 데코레이터를 사용한 경우에는 해당 데코레이터가 요청 객체를 가공하거나 특정한 로직을 수행하도록 구현되었다면 @ApiParam()은 필요하지 않습니다. 커스텀 데코레이터를 사용하는 경우 컨트롤러 메서드의 파라미터에 대한 Swagger 문서화는 해당 데코레이터를 사용한 파라미터 자체를 문서화해야 합니다.
정리하자면, 커스텀 데코레이터를 사용할 때에는 별도로 @ApiParam()을 추가하지 않아도 됩니다. 커스텀 데코레이터에 대한 문서화는 해당 데코레이터를 사용하는 컨트롤러 메서드의 파라미터에 대한 문서화를 통해 이루어집니다.