[Nest] Nest WikiDocs (4.7)

ShinJuYong·2022년 4월 8일
1

Nest

목록 보기
2/13
post-thumbnail

Redirection

서버는 Request를 처리한후 Response를 받은 클라이언트를 이동시킬때 @Redirect() 데코레이터를 사용해서 구현한다.

첫번째 인자는 이동시킬주소, 두번째 인자는 상태코드를 보내준다.

동적 Redirect

요청 처리 결과에 따라 동적으로 보내주고 싶다면 객체로 리턴을 시켜주면된다.

이런식으로 숫자를 전달받아 해당페이지로 이동한다면 이런식으로 구현이된다.

Route Parameter

파라미터는 @Param() 데코레이터로 주입받는다.

1. 여러개를 Object로받기

@Delete(':userId/memo/:memoId')
deleteUserMemo(@Param() params: { [key: string]: string }) {
  return `userId: ${params.userId}, memoId: ${params.memoId}`;
}

2. 라우팅 파라미터를 따로받기

@Delete(':userId/memo/:memoId')
deleteUserMemo(
  @Param('userId') userId: string,
  @Param('memoId') memoId: string,
) {
  return `userId: ${userId}, memoId: ${memoId}`;
}

하위 도메인(Sub-Domain) 라우팅

현재 우리프로그램의 도메인이
http://t1.com이라면 API요청은
http://api.t1.com으로 받고싶다 즉,
위의 두 요청을 서로 다르게 처리하고 싶다는의미.
또한 http://api.t1.com가 처리하지 못하는 요청은 원래의 t1.com에서 처리하도록 바꾼다

생성

nest g co ApiController

ApiController가 먼저 처리되도록 순서를 수정한다.

사용


그후 컨트롤러 설정을 바꾼뒤 요청을 보낸다.

@HostParam

앞서, 라우팅 파라미터를 @Param()으로 받았듯이, @HostParam()으로 서브 도메인을 변수로 받을수 있다.

Payload

POST, PUT, PATCH 요청은 파라미터를 함께 실어보낸다, 이 파라미터를 보내는 덩어리를 body라고하고 Nest.js에서는 DTO로 정의하여 다룬다

회원가입을 하기위해 이름과 이메일을 추가한다


그후 Controller에서 보낸값을 확인하기위해 코드를 수정한다

요청후 데이터가 들어가있는지 확인.

일반적으로 GET요청은 서버에게 전달할 데이터를 포함할때 요청 주소에 데이터를 묶어준다
GET /users?offset=0&limit=10과 같이 페이징이 되도록 구성한다
이 두개의 쿼리 파라미터를 @Query() DTO로 묶어 처리가 가능하다

export class GetUsersDto {
	offset: number;
  	limit: number;
}

3.2 (Users)

유저 인터페이스 생성
nest g co Users

회원가입 인터페이스 생성

요청의 본문을 Dto클래스로 받고있으니 Dto파일또한 생성한다.

4.1 (Provider)

서버가 제공하는 핵심기능중 전달받은 데이터를 어떻게 비즈니스 로직으로 해결하는가
배달앱에서 메뉴목록을 조회하면
-> 사용자 주변에 위치한 가게를 DB에서 검색하는 작업
-> 추천메뉴 구성 바꾸기 등등..
앱이 제공하는 핵심기능 (비즈니스로직)을 수행하는 역할이 Provider

Nest에서 제공하는 Provider의 핵심은 DI가 쉽다는것이다.

UserService 생성 및 회원가입 구현

회원가입

구현시 이메일 검증 토큰을 uuid로 사용하기때문에 라이브러리를 설치한다
yarn add uuid
yarn add @types/uuid --dev

아래는 회원가입 비즈니스 로직을 수행하는 서비스단의 코드

0개의 댓글