[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 공식 문서를 참고하여 작성되었습니다.