기본 개념
Last updated
Last updated
서버가 수행해야하는 작업을 데코레이터로 기술하여, 어플리케이션이 가지는 핵심 로직에 집중할 수 있도록 도와준다.
@Controller 데코레이터를 클래스에 달면 해당 클래스는 컨트롤러의 역할을 하게 된다.
@Get() 을 통해 들어오는 요청을 경로에 따라 관리 가능하다.
ex) @Get('/hello') 라고 하는 경우, /hello 경로로 들어오는 요청을 처리
@Contoller 데코레이터도 인자를 넣어 라우팅 경로의 prefix를 지정할 수 있다.
라우팅 패스는 와일드 카드를 이용하여 작성할 수 있다.
요청 객체 (Request Object)
Nest는 요청과 함께 전달되는 데이터를 핸들러가 다룰 수 있는 객체로 변환한다.
변환된 객체는 @Req() 데코레이터를 이용해 다룰 수 있다.
Nest는 CRUD에 대한 http method의 성공에 대한 응답으로 POST는 201, 그 외에는 200을 갖는다.
상태코드를 다른 코드를 바꾸기 위해서는 다음과 같이 적용할 수 있다.
요청을 처리하는 도중 에러가 발생하거나 예외를 던져야 하는 경우 다음과 같이 할 수 있다.
응답을 받는 서버 또는 클라이언트와 약속된 커스텀 헤더를 추가할 경우, @Headers 데코레이터를 사용한다.
인자로는 헤더 이름과 값을 받는다.
리디렉션(Redirection)
응답 바디에 redirectionUrl을 포함시켜 클라이언트가 스스로 페이지를 이동하도록 @Redirection 데코레이터 사용.
두번째 인자는 상태코드.
하위 도메인 라우팅
새로운 컨트롤러 생성
새로운 컨트롤러에서도 같은 엔드포인트를 받도록 하는데, 먼저 처리될 수 있도록 순서를 수정
@Controller 데코레이터는 ControllerOptions 객체를 인자로 받는데, 이 때 host 속성에 하위 도메인을 기술한다.
요청 페이로드 다루기
NestJS는 DTO (Data Transfer Object)를 정의하여 쉽게 다룰 수 있다.
예를 들어, Users 리소스를 생성하기 위해 POST /users 로 들어오는 바디는 CreateUserDto 로 받을 수 있다.
프로바이더 (Provider)
앱이 제공하고자 하는 핵심 기능, 즉 비즈니스 로직을 수행하는 역할을 하는 것.
Service, Repository, Factory, Helper 등 여러 형태로 구현이 가능.
Nest에서 제공하는 프로바이더의 핵심은 의존성을 주입할 수 있다는 점이다.
DI : Dependency Injection 를 이용하면 객체 생성과 사용의 관심을 분리할 수 있다.
모듈(Module)
전역 모듈을 만드는 방법 : @Global() 데코레이터 선언
동적 모듈(Dynamic Module)