개발일지

Nest.js 초기설정

2023. 7. 15. 19:22
목차
  1. Nest.js 설치
  2. Nest.js 실행
  3. Controller 생성
  4. 보일러 플레이트 생성
  5. Main.ts
  6. Controller
  7. 요청 객체
  8. 상태코드 지정
  9. 응답헤더
  10. 리디렉션

Nest.js 설치

  • nest.js를 글로벌환경에 설치하고 프로젝트 생성 CLI
$ npm i -g @nestjs/cli
$ nest new '생성하려는 프로젝트이름'

Nest.js 실행

  • start:dev로 실행시 package.json에 기술된 스크립트에 --watch 옵션이 포함되어 있어서 코드 변경후 저장할때 마다 서버를 자동으로 다시 실행함
npm run start:dev

Controller 생성

  • 컨트롤러는 들어오는 요청을 받고 처리된 결과를 응답으로 돌려주는 인터페이스 역할
  • 엔드포인트 라우팅 매커니즘을 통해 각 컨트롤러가 받을 수 있는 요청을 분류
nest g controller '이름'

보일러 플레이트 생성

  • '이름'에 해당하는 module, controller, service, entity, dto 등 코드와 테스트 코드를 자동으로 생성해주는 CLI
nest g resource '이름'

Main.ts

//Nest 애플리케이션 인스턴스 생성
import { NestFactory } from '@nestjs/core';
//모듈 import
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

Controller

import { Controller, Get } from '@nestjs/common';

//클래스 데코레이터
@Controller('cats')
export class CatsController {
//메서드 데코레이터
  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}

요청 객체

@Request(), @Req() req
@Response(), @Res()* res
@Next() next
@Session() req.session
@Param(key?: string) req.params/req.params[key]
@Body(key?: string) req.body/req.body[key]
@Query(key?: string) req.query/req.query[key]
@Headers(name?: string) req.headers/req.headers[name]
@Ip() req.ip
@HostParam() req.hosts
import { Controller, Bind, Get, Req } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  @Bind(Req())
  findAll(request) {
    return 'This action returns all cats';
  }
}

상태코드 지정

  • 응답 상태코드는 post 201을 제외하고 기본설정은 200
@Post()
//데코레이터에서 임의로 상태코드를 변경가능
@HttpCode(204)
create() {
  return 'This action adds a new cat';
}

응답헤더

  • 헤더 데코레이터를 추가하여 응답헤더를 지정
@Post()
@Header('Cache-Control', 'none')
create() {
  return 'This action adds a new cat';
}

리디렉션

  • 메서드 호출시 특정경로와 상태코드 반환설정
@Get()
@Redirect('https://nestjs.com', 301)
  • 'docs' url 호출시
  • 리디렉션 경로와 상태코드 지정
  • version쿼리 입력시 5인지 아닌지확인
@Get('docs')
@Redirect('https://docs.nestjs.com', 302)
getDocs(@Query('version') version) {
  if (version && version === '5') {
    return { url: 'https://docs.nestjs.com/v5/' };
  }
}

'개발일지' 카테고리의 다른 글

Nest MySQL 연동  (0) 2023.07.27
Nest.js bull Queue  (0) 2023.07.23
개발일지 86일차  (0) 2023.07.03
개발일지 85일차  (0) 2023.06.29
개발일지 84일차  (0) 2023.06.28
  1. Nest.js 설치
  2. Nest.js 실행
  3. Controller 생성
  4. 보일러 플레이트 생성
  5. Main.ts
  6. Controller
  7. 요청 객체
  8. 상태코드 지정
  9. 응답헤더
  10. 리디렉션
'개발일지' 카테고리의 다른 글
  • Nest MySQL 연동
  • Nest.js bull Queue
  • 개발일지 86일차
  • 개발일지 85일차
index.ys
index.ys
머리속에 떠도는 코드조각들을 맞추는 공간입니다.
index.ys
코린이 개발일지
index.ys
전체
오늘
어제

공지사항

블로그 메뉴

  • 홈
  • 방명록
  • Github
  • Notion
  • Figma
  • 타닥타닥 (235)
    • 개발일지 (124)
    • html , css (0)
    • Javascript (30)
    • Node.js (8)
    • React (2)
    • 네트워크 (1)
    • DB, SQL (5)
    • AWS (11)
    • CS (21)
    • 면접 (13)
    • 사진 (4)
    • 북로그 (3)
    • 머릿속 (5)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
index.ys
Nest.js 초기설정
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.