본문 바로가기

Nestjs

Controller

컨트롤러는 들어오는 요청 을 처리 하고 클라이언트에 응답 을 반환.

기본 컨트롤러를 만들기 위해 클래스와 데코레이터를 사용.


데코레이터

데코레이터 object
@Request() 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]

Route wildcards

패턴 기반 경로도 지원.

@Get('ab*cd')
findAll() {
  return 'This route uses a wildcard';
}

status code

응답 상태 코드는 201POST 요청을 제외하고 기본적으로 항상 200.

@Post()
@HttpCode(204)
create() {
  return 'This action adds a new cat';
}

Redirection

@Get('docs')
@Redirect('https://docs.nestjs.com', 302)
getDocs(@Query('version') version) {
  if (version && version === '5') {
    return { url: 'https://docs.nestjs.com/v5/' };
  }
}

Route parameters

(예 : GET /cats/1. id가 cat 인 경우 1)

@Get(':id')
findOne(@Param('id') id): string {
  return `This action returns a #${id} cat`;
}

Request payloads

먼저, DTO (Data Transfer Object) 스키마 를 결정해야한다.

DTO는 네트워크를 통해 데이터가 전송되는 방식을 정의하는 개체.

CreateCatDto Class

create-cat.dto.ts

export class CreateCatDto {
  readonly name: string;
  readonly age: number;
  readonly breed: string;
}

CatsController

cats.controller.ts

@Post()
async create(@Body() createCatDto: CreateCatDto) {
  return 'This action adds a new cat';
} 

전체 샘플 코드

cats.controller.ts

import { Controller, Get, Query, Post, Body, Put, Param, Delete } from '@nestjs/common';
import { CreateCatDto, UpdateCatDto, ListAllEntities } from './dto';

@Controller('cats')
export class CatsController {
  @Post()
  create(@Body() createCatDto: CreateCatDto) {
    return 'This action adds a new cat';
  }

  @Get()
  findAll(@Query() query: ListAllEntities) {
    return `This action returns all cats (limit: ${query.limit} items)`;
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return `This action returns a #${id} cat`;
  }

  @Put(':id')
  update(@Param('id') id: string, @Body() updateCatDto: UpdateCatDto) {
    return `This action updates a #${id} cat`;
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return `This action removes a #${id} cat`;
  }
}

'Nestjs' 카테고리의 다른 글

Middleware  (0) 2019.11.05
Modules  (0) 2019.11.05
Providers  (0) 2019.11.05
Getting Started  (0) 2019.11.05
Nest.js란  (0) 2019.11.05