[typescript] 타입스크립트에서 Nest.js 응답 객체 포매팅하기

Nest.js에서 응답 객체 포매팅

Nest.js는 TypeScript로 구축된 서버 측 애플리케이션의 프레임워크이며, 자동으로 API 응답을 포맷팅하는 기능을 제공합니다. 이를 활용하여 응답 객체의 형식을 관리하고 유지할 수 있습니다.

클래스로 응답 객체 정의하기

우선, 응답 객체의 구조를 나타내는 클래스를 정의해야 합니다. 이를 통해 Nest.js가 응답 객체를 포맷하는 데 사용할 클래스를 정의할 수 있습니다.

예를 들어, UserResponseDto 클래스를 생성하여 사용자 정보를 포함하는 응답 객체를 정의할 수 있습니다.

export class UserResponseDto {
  id: number;
  username: string;
  email: string;
}

응답 객체를 클래스로 변환

이제 받아온 데이터를 해당 클래스로 변환하는 메서드를 작성해야 합니다.

@Injectable()
export class UserService {
  async getUserInfo(id: number): Promise<UserResponseDto> {
    const userData = await this.userModel.findById(id);
    return this.formatUserResponse(userData);
  }

  private formatUserResponse(user: any): UserResponseDto {
    const userResponse = new UserResponseDto();
    userResponse.id = user.id;
    userResponse.username = user.username;
    userResponse.email = user.email;
    return userResponse;
  }
}

타입스크립트에서 클래스를 사용하여 응답 객체 반환

마지막으로, 컨트롤러에서 해당 응답 객체를 반환해야 합니다.

@Controller('users')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get(':id')
  async getUser(@Param('id') id: number): Promise<UserResponseDto> {
    return this.userService.getUserInfo(id);
  }
}

이제 Nest.js는 UserResponseDto 클래스에 따라 API 응답을 자동으로 포맷하여 반환할 것입니다.

이렇게 함으로써 타입스크립트를 사용하여 Nest.js 애플리케이션의 응답 객체를 쉽게 관리하고 유지할 수 있습니다.


위의 내용은 nestjs 공식 문서를 참고하여 작성되었습니다.