Nest.js 란?
node.js 로 데이터베이스를 구성할 수 있게 해주는 프레임워크
( typescript와 express를 이용한다. - 프레임워크의 프레임워크 )
Nest.js의 필요성
큰 규모의 프로젝트의 데이터베이스를 만들기 쉽다.
Nest.js 설치
npm i -g @nestjs/cli
Nest.js 프로젝트 만들기
nest new 프로젝트
Nest.js 서버 실행하기
npm run start:dev
yarn start:dev
Nest.js 기본 동작
main.ts가 가장 먼저 실행되고,
module, controller, service로 앱을 만든다.
controller
url에서 정보를 받아, 라우팅해주는 역할
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
// url에서 /hello가 감지되면, sayHello() 함수를 실행
@Get('/hello')
sayHello(): string {
return 'Hello';
}
}
@가 붙은 요소는 데코레이터라고 부르며,
바로 아래줄에 있는 요소를 설명해준다.
( @Get : http get 방식으로 요청을 처리한다 )
service
실질적인 기능을 수행하는 역할
module
--
나만의 앱 만들기 위해, 기존의 내용 지우기
// app.module.ts
import { Module } from '@nestjs/common';
// 연결된 controllers, providers 제거
@Module({
imports: [],
controllers: [],
providers: [],
})
export class AppModule {}
새로운 내용추가
// 새로운 controller 만들고 연결하기
nest g co 이름
// nest --help로 위와 같은 명령을 사용할 수 있다.
// 바꾼 앱 - 전체 영화 보여주기, 영화 상세페이지 보여주기
import { Controller } from '@nestjs/common';
@Controller('movies')
export class MoviesController {
@Get
getAll() {
return "This is will load all movies";
}
@Get
getOne('/:id') {
return "This is will load one movie";
}
}
결과를 보고 알 수 있는 사실
Controller 데코레이터 옆 소괄호에 들어있는 텍스트가 기본 라우팅 기능을 한다.
Controller 데코레이터 내부에 들어있는 또 다른 라우터들은, 기본 라우터 위에서 작동한다.
URL에서 정보 받아오기
// movies.controller.ts
import { Controller, Get, Param, Post, Delete } from "nestjs/common"
@Controller('movies'){
@Get()
getAll(){
return "all movies"
}
@Get('/:id')
getOne(@Param('id') movieId:string){
return `movie, id: ${movieId}`
}
@Post()
create(){
return "create movie"
}
@Delete('/:id')
remove(@Param('id') movieId:string){
return `delete movie, id: ${movieId}`
}
}
Param 데코레이션을 사용하면, URL에서 정보를 받아와 사용할 수 있다.
그 외 데코레이션
@Put : 모든 정보 리로딩 하기
@Patch : 특정 정보 리로딩 하기
반응형