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 |