Controller
컨트롤러는 요청과 응답을 처리하는 곳. express에서 routing처리 하던 것과 거의 동일하다.@Controller
데코레이터를 사용한다. @Controller
데코레이터에 path prefix를 설정할 수 있다.@Controller('users')
는 /users
로 들어오는 모든 요청을 처리하게된다.
import { Controller } from '@nestjs/common';
import { UserService } from './service/user.service';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
}
HTTP Request Method
Http 요청 역시 데코레이터로 구분한다.
@Get
@Post
@Patch
,@Put
@Delete
@Options
@Head
@All
컨트롤러 작성해보기
일단 @Get
부터 작성해본다. GET /users
로 오는 요청은 여기서 처리된다.
path의 값을 받을때는 @Param
데코레이터를 사용한다.
/users?page=1&keyword=foo
과 같이 Query String을 받을 때는@Query
데코레이터를 사용한다.
@Get()
async getUsers(): Promise<ResponseUserDto[]> {
return await this.userService.findAll();
}
@Get(':id')
async getUser(@Param('id') userId: string): Promise<ResponseUserDto> {
return await this.userService.findById(userId);
}
@Post
요청 역시 비슷하다. @Body
데코레이터로 받을 수 있고, dto로 자동 변환도 된다!
@Post()
async createUser(@Body() createDto: CreateUserDto) {
return this.userService.create(createDto);
}
전체 코드
async/await
을 사용하면,Promise
를 반환해야 한다.
import {
Body,
Controller,
Delete,
Get,
Param,
ParseIntPipe,
Patch,
Post,
} from '@nestjs/common';
import { CreateUserDto } from './dto/create.dto';
import { ResponseUserDto } from './dto/response.dto';
import { UpdateUserDto } from './dto/update.dto';
import { UserService } from './service/user.service';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Get()
async getUsers(): Promise<ResponseUserDto[]> {
return await this.userService.findAll();
}
@Get('/:id')
async getUser(@Param('id') userId: string): Promise<ResponseUserDto> {
return await this.userService.findById(userId);
}
@Post()
async createUser(@Body() createDto: CreateUserDto) {
return this.userService.create(createDto);
}
@Patch('/:id')
async modifyUser(
@Param('id') userId: string,
@Body() updateDto: UpdateUserDto,
) {
return this.userService.modify(userId, updateDto);
}
@Delete('/:id')
async deleteUser(@Param('id') userId: string) {
return this.userService.remove(userId);
}
}
'STUDY > Node.js' 카테고리의 다른 글
Node.js | Crypto 모듈을 사용해 비밀번호 암호화 하기 (0) | 2022.11.19 |
---|---|
NestJS | API 만들기 (3) - Exception, Validation (0) | 2021.08.06 |
NestJS | API 만들기 (1) - Repository (0) | 2021.08.04 |
NestJS | 데이터베이스 연결, 설정 정보를 입력하는 다양한 방법... (database connection) (0) | 2021.07.28 |
NestJS | 유효성 검사 validation (0) | 2021.07.23 |