서버는
Request
를 처리한후Response
를 받은 클라이언트를 이동시킬때@Redirect()
데코레이터를 사용해서 구현한다.
첫번째 인자는 이동시킬주소, 두번째 인자는 상태코드를 보내준다.
요청 처리 결과에 따라 동적으로 보내주고 싶다면 객체로 리턴을 시켜주면된다.
이런식으로 숫자를 전달받아 해당페이지로 이동한다면 이런식으로 구현이된다.
파라미터는
@Param()
데코레이터로 주입받는다.
@Delete(':userId/memo/:memoId')
deleteUserMemo(@Param() params: { [key: string]: string }) {
return `userId: ${params.userId}, memoId: ${params.memoId}`;
}
@Delete(':userId/memo/:memoId')
deleteUserMemo(
@Param('userId') userId: string,
@Param('memoId') memoId: string,
) {
return `userId: ${userId}, memoId: ${memoId}`;
}
현재 우리프로그램의 도메인이
http://t1.com
이라면API
요청은
http://api.t1.com
으로 받고싶다 즉,
위의 두 요청을 서로 다르게 처리하고 싶다는의미.
또한http://api.t1.com
가 처리하지 못하는 요청은 원래의t1.com
에서 처리하도록 바꾼다
nest g co ApiController
ApiController
가 먼저 처리되도록 순서를 수정한다.
그후 컨트롤러 설정을 바꾼뒤 요청을 보낸다.
앞서, 라우팅 파라미터를
@Param()
으로 받았듯이,@HostParam()
으로 서브 도메인을 변수로 받을수 있다.
POST
,PUT
,PATCH
요청은 파라미터를 함께 실어보낸다, 이 파라미터를 보내는 덩어리를body
라고하고Nest.js
에서는DTO
로 정의하여 다룬다회원가입을 하기위해 이름과 이메일을 추가한다
그후 Controller에서 보낸값을 확인하기위해 코드를 수정한다
요청후 데이터가 들어가있는지 확인.
일반적으로
GET
요청은 서버에게 전달할 데이터를 포함할때 요청 주소에 데이터를 묶어준다
GET /users?offset=0&limit=10
과 같이 페이징이 되도록 구성한다
이 두개의 쿼리 파라미터를@Query()
DTO로 묶어 처리가 가능하다export class GetUsersDto { offset: number; limit: number; }
유저 인터페이스 생성
nest g co Users
요청의 본문을 Dto클래스로 받고있으니 Dto파일또한 생성한다.
서버가 제공하는 핵심기능중 전달받은 데이터를 어떻게 비즈니스 로직으로 해결하는가
배달앱에서 메뉴목록을 조회하면
-> 사용자 주변에 위치한 가게를 DB에서 검색하는 작업
-> 추천메뉴 구성 바꾸기 등등..
앱이 제공하는 핵심기능 (비즈니스로직)을 수행하는 역할이Provider
Nest에서 제공하는 Provider
의 핵심은 DI가 쉽다는것이다.
구현시 이메일 검증 토큰을 uuid로 사용하기때문에 라이브러리를 설치한다
yarn add uuid
yarn add @types/uuid --dev
아래는 회원가입 비즈니스 로직을 수행하는 서비스단의 코드