컨트롤러는 들어오는 요청 을 처리 하고 클라이언트에 응답 을 반환.
기본 컨트롤러를 만들기 위해 클래스와 데코레이터를 사용.
데코레이터
데코레이터 | 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
응답 상태 코드는 201
인 POST 요청
을 제외하고 기본적으로 항상 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 |