본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr
0428 월
학습 내용 정리
[Class 01]Part 27 .Swagger 다큐멘테이션
Ch 1. 다큐멘테이션 구현하기
Swagger에서 토큰 인증import { createParamDecorator, ExecutionContext } from "@nestjs/common";
export const Authorization = createParamDecorator(
(data: any, context: ExecutionContext) =>{
const req = context.switchToHttp().getRequest();
return req.headers['authorization'];
}
);
@Controller('auth')
@ApiBearerAuth()
export class AuthController {
constructor(private readonly authService: AuthService) {}
@Public()
@ApiBasicAuth()
@Post('register')
/// authorization : Basic $token 들어옴
registerUser(@Authorization() token: string){
return this.authService.register(token)
}
@Public()
@ApiBasicAuth()
@Post('login')
loginUser(@Authorization() token: string){
return this.authService.login(token)
}
}
수강후기
이번 강의에서는 NestJS 프로젝트에 Swagger 다큐멘테이션을 적용하고, 인증 방식까지 문서화하는 방법을 배웠습니다.
특히 @ApiBearerAuth()와 @ApiBasicAuth()를 활용하여 Swagger UI 상에서도 인증 토큰을 쉽게 입력하고 API를 테스트할 수 있도록 설정했습니다.
먼저, 사용자 요청 헤더에서 Authorization 값을 추출하기 위해 @Authorization이라는 커스텀 데코레이터를 직접 생성했습니다. ExecutionContext를 사용해서 요청 객체(Request)에 접근하고, 그 안의 authorization 헤더를 반환하는 방식으로 간결하게 구현했습니다. 이런 커스텀 데코레이터를 통해 컨트롤러 코드가 훨씬 깔끔해졌고, 인증 방식에 대한 유연한 처리가 가능해졌습니다.
auth 모듈의 AuthController에서는 @ApiBasicAuth()를 register와 login 메서드에만 적용했습니다. 이 두 메서드는 기본 인증(Basic Auth) 형태로 토큰을 받아 처리하기 때문입니다. 반면 나머지 API들(user, movie, genre, director, common 컨트롤러)에는 @ApiBearerAuth()를 적용했습니다. 이를 통해 Bearer 토큰 인증이 필요한 API임을 Swagger 문서에 명확히 표시할 수 있었습니다.
추가로, 이번 과정에서는 Swagger 설정을 통해 POST 요청 시에도 토큰을 쉽게 입력하고 테스트할 수 있도록 했습니다. 기존에는 Postman과 같은 외부 툴을 이용해 테스트해야 했지만, Swagger만으로 API 호출과 인증 테스트가 가능해져 개발 생산성이 크게 향상되었습니다.
직접 다큐멘테이션을 구성하고, 각각의 인증 방식을 구분하여 적용해보면서 Swagger의 강력함과 편리함을 체감할 수 있었습니다. 프로젝트 규모가 커질수록 이런 API 문서화가 필수라는 점도 다시 한번 깨달았습니다. 이번 파트를 통해 NestJS 기반 백엔드 개발에 있어 문서화와 인증 처리를 어떻게 효율적으로 병행할 수 있는지 좋은 경험을 얻었습니다.
사진



