[๐ŸงฉNestjs] ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ

Aprilยท2022๋…„ 10์›” 22์ผ
0

๐ŸงฉNestJs

๋ชฉ๋ก ๋ณด๊ธฐ
1/6

1. Nest ์„ค์น˜

npm i -g @nestjs/cli

2. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

// nest new ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
nest new project-name

3. ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ๊ตฌ์กฐ

.eslintrc

  • ํŠน์ •ํ•œ ๊ทœ์น™์„ ๊ฐ€์ง€๊ณ  ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์งค ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์ด๋“œ๋ผ์ธ ์ œ์‹œ, ๋ฌธ๋ฒ•์— ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด ์•Œ๋ ค์ฃผ๋Š” ์—ญํ•  ๋“ฑ

.prettierrc

  • ์ฃผ๋กœ ์ฝ”๋“œ ํ˜•์‹์„ ๋งž์ถ”๋Š”๋ฐ ์‚ฌ์šฉ
  • single quote(')๋ฅผ ์‚ฌ์šฉํ• ์ง€ double quotes(")๋ฅผ ์‚ฌ์šฉํ• ์ง€
  • indent๊ฐ’์„ 2๋กœ ํ• ์ง€ 4๋กœ ํ• ์ง€ ๋“ฑ
  • ์—๋Ÿฌ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ฝ”๋“œ ํฌ๋งทํ„ฐ ์—ญํ• 

nest-cli.json

  • nest ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ํŠน์ •ํ•œ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋Š” json ํŒŒ์ผ

tsconfig.json

  • ์–ด๋–ป๊ฒŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ปดํŒŒ์ผ ํ• ์ง€ ์„ค์ •

tsconfig.build

  • tsconfig.json์˜ ์—ฐ์žฅ์„ ์ƒ ํŒŒ์ผ์ด๋ฉฐ,
  • buildํ•  ๋•Œ ํ•„์š”ํ•œ ์„ค์ •๋“ค
  • excludes์—์„œ๋Š” ํ•„๋“œํ•  ๋•Œ ํ•„์š”์—†๋Š” ํŒŒ์ผ๋“ค ๋ช…์‹œ

package.json

  • build: ์šด์˜ํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋นŒ๋“œ
  • fotmat: lint ์—๋Ÿญ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ˆ˜์ •
  • start: ์•ฑ ์‹œ์ž‘

src ํด๋”

  • main.ts: ์•ฑ์„ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰. ์•ฑ ์‹œ์ž‘์ 
  • app.module.ts: ์•ฑ ๋ชจ๋“ˆ ์ •์˜

4. Nest ํ๋ฆ„

(1) main.ts

(2) app.module.ts

  • ์‹œ์ž‘์ . ์ง„์ž…์ .
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

// 0. ์ง„์ž…์ 
@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

(3) app.controller.ts

  • app.module.ts์—์„œ ํ˜ธ์ถœํ•œ controller๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
    • Controller: ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๊ฐ€ Request์„ ๋ณด๋‚ผ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ํ˜ธ์ถœ
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

// 1. Controller: ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๊ฐ€ Request์„ ๋ณด๋‚ผ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ํ˜ธ์ถœ
@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  // 2. endPoint('/')๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‹คํ–‰๋จ. appServiceํŒŒ์ผ์— ์žˆ๋Š” getHello()๋ฅผ ์‹คํ–‰
  // 4. getHello()์—์„œ ๋ฆฌํ„ดํ•œ 'Hello World!'๋ฅผ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—๊ฒŒ Response ํ•จ
  // 5. ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—์„œ 'Hello World!'๊ฐ€ ์ถœ๋ ฅ
  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

(4) app.service.ts

  • Controller์—์„œ ํ˜ธ์ถœํ•œ getHello()๊ฐ€ ์‹คํ–‰ํ•˜๋ฉฐ Controller์—๊ฒŒ Hello World!๋ฅผ ๋ฆฌํ„ดํ•จ
import { Injectable } from '@nestjs/common';

// 3. Controller์—์„œ ํ˜ธ์ถœํ•œ getHello()๊ฐ€ ์‹คํ–‰ํ•˜๋ฉฐ Controller์—๊ฒŒ 'Hello World!'๋ฅผ ๋ฆฌํ„ดํ•จ.
@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

profile
๐Ÿš€ ๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ์“ฐ๋Š” ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€