Javascript 45

NestJS Pipe에 대해 알아보기

Pipe 클라이언트가 보내는 HTTP 요청으로부터 데이터를 Parsing 하고 Validation 하여 컨트롤러 메서드의 파라미터로 전달하는 중간 레이어이다. 스프링 MVC의 ArgumentResolver와 Bean Validation이라고 생각하면 된다. 스프링의 BeanValidator와 비슷한 구조를 하고 있지만 예외처리를 각각의 Pipe에서 하기 때문에 오히려 코드가 깔끔해질것 같다는 생각이 든다. NestJS 기본 내장 파이프 ValidationPipe: DTO에 대한 유효성 검사를 수행합니다. ParseArrayPipe: 문자열을 배열로 변환합니다. ParseBoolPipe: 문자열을 부울 값으로 변환합니다. ParseEnumPipe: 문자열을 enum 값으로 변환합니다. ParseIntPip..

Javascript/NestJS 2023.03.14

커스텀파이프로 데이터 바인딩 및 유효성 검사

요청 유효성 검사 UserUpdateDto export class UserUpdateDto { @IsNotIn([' ']) @Length(1, 7) nickname: string; @MaxDate(new Date()) birthdate: Date; } @IsNotIn()는 리스트를 파라미터로 받아 리스트 안에 객체와 같으면 BadRequest를 응답한다. ParseUserUpdateDtoPipe 요청으로 넘어오는 birthdate는 String이다. 때문에 Date 타입으로 변경해야 한다. CustomException은 HttpException을 상속한 커스텀 예외이다. export class ParseUserUpdateDtoPipe implements PipeTransform { transform(va..

Javascript/NestJS 2023.03.13

NestJS Controller에 대해 알아보기

Controller 생성하기 nest g controller [컨트롤러 이름] *.controller.spec.ts 은 테스트 파일로 생성을 원치 않으면 명령어 뒤에 --no-spec 을 붙여주면 된다. 요청 처리 방식 @Controller('boards') export class BoardsController { @Get() getBoards() { return [] } } NestJS의 컨트롤러는 스프링의 컨트롤러와 매우 유사하다. 엔드포인트를 설정하는 데코레이터는 다르지 않지만 파라미터를 바인딩하는 데코레이터에는 차이가 있다. Path Parameter @Controller('boards') export class BoardsController { // GET hostname:3000/boards/..

Javascript/NestJS 2023.03.13

NestJS Module에 대해 알아보기

Module NestJS는 모듈 기반의 아키텍처를 사용하며, 애플리케이션은 여러 모듈로 구성된다. Module은 일종의 컨테이너로, 애플리케이션에서 사용되는 컴포넌트를 포함한다. 각각의 컴포넌트는 Module에 등록되어야 애플리케이션에서 사용할 수 있으며 기본적으로 싱글 톤으로 여러 모듈 간에 쉽게 동일한 인스턴스를 공유할 수 있다. App Module(root) AppModule은 루트 모듈로 애플리케이션의 진입점(entry point) 역할을 한다. 애플리케이션을 시작할 때 NestJS가 루트 모듈을 로드하여 애플리케이션을 초기화하고 실행한다. 루트 모듈은 보통 app.module.ts 파일로 작성되며, @Module() 데코레이터를 사용하여 해당 클래스가 NestJS 모듈임을 나타낸다. 루트 모듈은..

Javascript/NestJS 2023.03.13

프로젝트 구조

NestJS CLI 설치 NestJS CLI는 NestJS 애플리케이션을 개발할 때 사용하는 Command Line Interface입니다. NestJS CLI를 사용하면 NestJS 프로젝트 구조를 자동으로 생성하거나, 모듈, 컨트롤러, 서비스 등의 구성요소를 생성할 수 있습니다. 또한, 프로젝트 빌드, 실행, 테스트 등의 작업을 쉽게 수행할 수 있습니다. NestJS CLI는 NestJS 애플리케이션 개발의 생산성을 높여주는 매우 유용한 도구입니다.npm i -g @nestjs/cli 프로젝트 생성아래 명령어로 NestJS 프로젝트를 생성하게 되면 [프로젝트 이름]으로 된 디렉토리가 생성됩니다.nest new [프로젝트 이름] 디렉토리 구조프로젝트가 생성된 디렉토리의 구조입니다.├── README.m..

Javascript/NestJS 2023.03.13