본문 바로가기
World/Nest.js

04. Nest.js_RestAPI_컨트롤러

by RIEM 2023. 2. 7.
728x90
// nest.js 구조
test
src
- main.ts
    - AppModule
        - Controllers
        - Services
        - Tests
        - ...
    - AppModule
        - Controllers
        - Services
        - Tests
        - ...
    - AppModule
        - Controllers
        - Services
        - Tests
        - ...

목차

  • 컨트롤러 개념
  • 컨트롤러 구현하기
  • 이벤트 컨트롤러 작성
  • 모듈에 이벤트 컨트롤러 추가

Controllers

컨트롤러 개념

Screen Shot 2023-02-07 at 2 52 09 PM

각 AppModule에는 컨트롤러가 있습니다.

컨트롤러의 역할
controller는 특정 action들을 호출하는 메소드를 가지는 클래스입니다. 이를 사용하여 클라이언트의 request, response를 핸들링하는 역할을 합니다.

컨트롤러의 특징

  • 클라이언트의 Request직접 처리한다.
  • @Get과 같은 HTTP verb 데코레이터로 action을 정의합니다
  • 컨트롤러의 action 메소드에서 반환한 것을 Response로 보냅니다
  • 참고로 @controller 데코레이터로 decorated됩니다.

Controllers 구현하기

// src/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();
  }

  // /bye 경로로 GET 요청할 경우, 문자열을 리턴한다
  @Get('/bye')
  getBye(): string {
    return 'Bye :D';
  }
}

/bye 루트의 코드를 추가해주었습니다.

npm run start:dev

nest.js 어플리케이션을 개발자 모드로 실행해줍니다.

브라우저에서 localhost:3000/bye 주소로 바로 접속하시거나, Postman과 같은 api 도구로 GET 요청을 보내면 'Bye :D'라는 문구를 볼 수 있습니다.

Resource Controller

주요 개념

Resource : 이벤트, 유저, 이벤트 참가자 등을 지칭합니다
Operation : CRUD 작업을 의미합니다

이벤트 컨트롤러 작성

// src/events.controllers.ts
import { Controller, Delete, Get, Patch, Post } from '@nestjs/common';

@Controller('/events')
export class EventsController {

  // 5개 정도 가볍게 유지하는 것이 좋다
  @Get()
  findAll() { }
  @Get()
  findOne() { }
  @Post()
  create() { }
  @Patch()
  update() { }
  @Delete()
  remove() { }
}

모듈에 이벤트 컨트롤러 추가

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { EventsController } from './events.controllers';

@Module({
  imports: [],
  controllers: [AppController, EventsController], // 이벤트 컨트롤러 추가
  providers: [AppService],
})
export class AppModule {}

이벤트 컨트롤러를 작성했다면 모듈에 추가해줘야 합니다.

728x90

'World > Nest.js' 카테고리의 다른 글

06. Nest.js_RestAPI_Request Body  (0) 2023.02.07
05. Nest.js_RestAPI_Route Parameters  (0) 2023.02.07
03. Nest.js 프로젝트 구조  (0) 2023.02.07
02. nest.js 프로젝트 준비하는 방법  (0) 2023.02.07
01. nestjs를 사용하기 전  (0) 2023.02.07

댓글