클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (514) N
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (301) N
      • C# (84) N
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • Windows API
  • android
  • LINQ
  • asp.net core
  • ASP.NET
  • MariaDB
  • Kotlin
  • android studio
  • jQuery
  • c#
  • .NET
  • node.js
  • JavaScript
  • HTML5
  • asp.net core web api
  • 변수
  • exception
  • CSS3
  • NestJS
  • Entity Framework

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

[nestjs] controller
Web/NestJS

[nestjs] controller

2021. 3. 15. 17:56
728x90

nestjs에서 controller를 추가하기 위해서는 CLI를 사용합니다.

 

우선 nest명령을 내려보면 위와 같이 설치 가능한 항목이 나열되는데 이를 통해 어떤 형태로 명령을 내릴 수 있는지 확인할 수 있습니다.

 

위 내용에 따라 신규로 무엇인가를 생성하려면 generate(줄여서g)가 필요하며 컨트롤러는 controller(줄여서 co)가 필요하다는 사실을 알 수 있습니다. 이러한 형식에 따라 다음 명령으로 controller를 생성합니다.

nest g co

명령을 내리고 나면 생성할 Controller의 이름을 묻게 되는데 적당한 이름을 입력하고 다음으로 넘어갑니다.

 

예제에서는 school로 하였으며 이름을 입력하고 나면 Controller의 생성이 완료됩니다.

 

Controller를 생성하고 나면 app.module은 방금 생성한 Controller를 사용할 수 있게끔 다음과 같이 자등으로 import가 추가된것을 확인할 수 있으며

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { SchoolController } from './school/school.controller';

@Module({
  imports: [],
  controllers: [AppController, SchoolController],
  providers: [AppService],
})
export class AppModule {}

디렉터리에 관련 폴더와 파일도 같이 생성되어 있음을 알 수 있습니다.

 

이제 school 디렉터리 안에 있는 school.controller.ts에서 아래와 같이 라우터를 추가합니다.

@Controller('school')
export class SchoolController {
    @Get()
    allStudents() {
        return "all";
    }
}

추가한 라우터에 따라 '/school'로 요청을 하게 되면 위에서 작성한 결과를 받게 됩니다.

 

조금 내용을 바꿔서 아래와 같이 라우터하나를 더 추가합니다.

@Get(':id')
getStudent(@Param('id') id: string) {
    return `id : ${id}`;
}

이번에는 get요청을 받는데 id라는 변수로 파라미터를 추가로 받도록 하였습니다. nestjs에서 파라미터 변숫값을 가지고 오려면 @Param 데코레이터를 통해 값을 추출할 수 있도록 요청해야 합니다.

 

반면 Query String은 @Query() 데코레이터를 통해 받을 수 있습니다.

@Get('find')
findStudent(@Query('id') id: string) {
    return `id : ${id}`;
}

사용방법은 @Param()과 동일합니다.

 

이번에는 Post를 통해서 들어오는 데이터를 어떻게 받을 수 있는지 확인해 보겠습니다. Controller에 Post 라우터를 아래와 같이 추가하고

@Post()
setStudent(@Body() student) {
    return student;
}

json으로 데이터를 Post전송해보면

 

전송한 값을 그대로 반환하고 있음을 알 수 있습니다. Controller에서 Post데이터를 받으려면 @Body() 데코레이터를 사용해야 하며 지정한 이름으로 값을 다룰 수 있게 됩니다.

 

만약 파라미터와 Body를 동시에 받아야 한다면 그만큼 함수에 매개변수를 지정해 주면 됩니다.

@Patch(';id')
patchStudent(@Param('id') id: string, @Body() student) {
    return '';
}

 

728x90
저작자표시 비영리 변경금지

'Web > NestJS' 카테고리의 다른 글

[nestjs] DTO (Data Transfer Object)  (0) 2021.03.16
[nestjs] validation  (0) 2021.03.16
[nestjs] Service  (0) 2021.03.16
[nestjs] 시작하기  (0) 2021.03.15
[NestJS] 소개및 설치  (0) 2021.03.15
    'Web/NestJS' 카테고리의 다른 글
    • [nestjs] validation
    • [nestjs] Service
    • [nestjs] 시작하기
    • [NestJS] 소개및 설치
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바