[Nest.js] 2. 컨트롤러

sookyung kang·2023년 3월 7일

Nest.js

목록 보기
2/8
post-thumbnail

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=306191959 위 책을 참고 하였습니다.

Nest의 컨트롤러란?
:request를 받고 처리된 결과를 response로 돌려주는 인터페이스역할을 합니다.

역할
: 엔드포인트 라우팅 메커니즘을 통해 각 컨트롤러가 받을수 있는 요청을 분류합니다.
목적
: 구조적이고 모듈화된 소프트웨어 작성

이전 게시글에서 만들어놓았던 프로젝트를 활용 합니다.

$ nest g controller Users

컨트롤러를 생성해 줍니다.

생성 되었다면
이렇게 파일이 생성 됩니다.

  1. 라우팅

app.controller.ts 파일을 보면

이런 소스 코드가 있음을 확인 할수 있습니다.
여기서 getHello 함수는 @Get 데커레이터를 가지고 있습니다.
경로를 루트경로가 아니라 '/hello' 로 변경해 봅니다.

기존 localhost로 들어가면 이런 에러 화면이 뜹니다.

http://localhost:3000/hello 로 들어가면

아까 만났던 화면이 뜹니다.

만일 @Controller 에도 인수를 전달해 @Controller('app') 이라고 입력하면
http://localhost:3000/app/hello 에 들어가야 서버에 접속이 가능합니다.

  1. 리디렉션
    @Redirect 데커레이터를 사용하면 쉽게 구현할 수 있습니다.

에러>> 기존 my-project 에서 CRUD API 와 dto를 만들기 위해

$ nest g resource Users 

를 입력했으나 아래와 같이 충돌이 발생하여

처음으로 돌아가서 my-project1을 만들어주고

$ nest g resource Users 

를 입력해 주었습니다.

users.controller.ts 에서

import { Redirect } from '@nestjs/common';
 @Redirect('https://nestjs.com', 301)
  @Get(':id')
  findOneRedirection(@Param('id') id: string) {
    return this.usersService.findOne(+id);
  }

위와 같이 입력하여 줍니다.

그리고 동일한 위치에서 다른 콘솔창을 켜서

$ npm run start:dev
$ curl http://localhost:3000/users/1 -v

를 입력하여줍니다.

또,
http://localhost:3000/users/1 이 페이지로 들어가게 되면

설정해둔 홈페이지로 리디렉션 됩니다.

0개의 댓글