728x90
반응형

Route parameters

동적 데이터를 일부 수락해야 하는 경우 @Get() 데코레이터에서 파라미터를 정의해주는 방법이 있다.

@Get(':id')
findOne(@Param() params): string {
  console.log(params.id);
  return `This action returns a #${params.id} cat`;
}
@nestjs/common 패키지에서 Param을 가져옵니다.

 

 

Asynchronicity

모든 비동기 함수는  Promise를 반환해야 한다. Nest가 자체적으로 해결할 수 있는 지연된 값을 반환할 수 있다.

 

cats.controller.ts

@Get()
async findAll(): Promise<any[]> {
  return [];
}

 

 

Request payloads

 

이전 예제에서 POST 라우터의 매개변수를 다루지 않았다. 여기에 @Body() 데코레이터를 추가해 문제를 해결해보겠다.

그러기 전에 먼저 DTO( 데이터 전송 개체 )스키마를 결정해야 한다. 아래와 같이 할 수 있다.

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

 

그 다음 CatsController 내부에서 생성된 DTO를 사용할 수 있다.

 

cats.contoller.ts

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

 

 

Full resource sample

 

다음은 여러 데코레이터를 사용하여 기본 컨트롤러를 만드는 예제이다.

 

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`;
  }
}

 

 

728x90
반응형

'Back-End > Nest.js' 카테고리의 다른 글

Nest.js | 개요 | Modules  (0) 2021.09.24
Nest.js | 개요 | Service  (0) 2021.09.24
Nest.js | 개요 | Controllers(1)  (0) 2021.09.24
Nest.js | 개요 | 첫 번째 단계  (0) 2021.09.24
Next.js | 소개  (0) 2021.09.24

+ Recent posts