Nest.js
- Node.js ๋ก ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ๋, ์กฐ๊ธ ๋ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ ํ๋ ์์ํฌ
- ๊ธฐ๋ณธ์ ์ผ๋ก TypeScript ๋ฅผ ์ฌ์ฉํ๊ธฐ๋๋ฌธ์, TypeScript ์ ๋ํ ์ดํด๊ฐ ์์ด์ผํ๋ค
Nest.js ์ค์นํ๊ธฐ
/* ์ค์น */
npm install -g @nestjs/cli
/* nest project ์์ฑ */
nest new project-name
Nest.js ๊ตฌ์กฐ
ํ๋ก์ ํธ ์์ฑ ์งํ
src ๋ด๋ถ
- Nest.js ๋ ๊ธฐ๋ณธ์ ์ผ๋ก main.ts ํ์ผ์ ์ฝ๋๋ค
- src ํด๋๋ก ์ฐพ์์ค๋ ์ด์ ๋ nest-cil.json ํ์ผ์ ์ด์ด๋ณด๋ฉด ์์์๋ค
- main.ts > app.module.ts > app.modules.ts ํ์ผ์ ์ ์ธ๋ controller ์ service ๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ์กฐ
Nest.js Controller
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();
}
}
- @ ์ ๋ฐ์ฝ๋ ์ดํฐ ๋ผ๊ณ ํ๋ฉฐ, @Post @Delete @Injectable ๋ฑ๋ฑ ์ฌ์ฉํ ์ ์๋ค ( import ํด์ ์ฌ์ฉ ๊ฐ๋ฅ )
- @Get ๋ฐ์ฝ๋ ์ดํฐ ์์ url ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํด์ฃผ๊ณ , ๊ทธ ๊ฒฝ๋ก์ ๋ค์ด์์๋ ์คํ ์ํฌ ํจ์๋ฅผ ์์ฑํ๋ค ( ๋ฐ์ฝ๋ ์ดํฐ์ ํด๋น ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ์คํ์ํฌ ํจ์๋ ์ ๋ ๋จ์ด์ ธ์์ผ๋ฉด ์๋๋ค. ๋ฐ๋ก ์๋ ๋ผ์ธ์ ์์ฑํด์ผํ๋ค )
- ์ Controller ๋ฅผ ํด์ํด๋ณด๋ฉด ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ก ์์ฒญ์ด ๋ค์ด์์๋, getHello ํจ์๋ฅผ ์คํ์์ผ ์ฃผ๊ณ getHello ํจ์๋ Service ์ ์ ์ธ๋์ด์๋ค
- ์ฆ Controller ์๋ ๊ฒฝ๋ก์ ํจ์์ ๋ํ ์ ์ธ๋ง ํด๋๊ณ , ํจ์์ ๋ก์ง์ Service ์์ ์์ฑํ๋ค
Nest.js Service
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
- export ๋์ด์๋ AppService Class ๋ฅผ Controller ์์ import ํ๊ณ ์์ผ๋ฏ๋ก getHello ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค
- getHello ํจ์๋ string Type ์ return ํ๊ฒ ๋์ด์๊ณ , 'Hello World!' ๋ฅผ return ํ๊ณ ์๊ธฐ๋๋ฌธ์ Nest.js ์๋ฒ๋ฅผ ์ฒ์ ๋ง๋ค๊ณ ์คํ์ํค๋ฉด Hello World! ๋ฅผ ํ์ธํ ์ ์๋ค