Controllers
클라이언트로 부터 오는 request 를 받고 respons 를 반환
라우팅 방법 예시
example.controller.ts
import { Controller, Get } from '@nestjs/common';
@Controller('cats') // 주소를 설정 : "http://localhost:3000/cats"
export class CatsController {
@Get() // routs
findAll(): string {
return 'This action returns all cats';
}
@Get(:id) // "http://localhost:3000/cats/1"
findOne(): string {
return 'This action returns a cat';
}
@Get('breed') // "http://localhost:3000/cats/breed"
findOne(): string {
return 'This action returns breed';
}
@Post()
@HttpCode(201) // 상태 코드 설정
create() {
return 'This action adds a new cat';
}
}
@GET / @Post /@Patch / @Delete ... 아래에 다양한 데코레이터를 사용할 수 있다.
@HttpCode → 초기설정값 (default): 200 ,
Express 의 방식처럼 findAll(@Res() response) response.status(200).send() 가능! 하지만 추천 X
@Header
@Redirect
...
요청 데이터 사용방법
Body
요청데이터 예시
{
"email" : "test@example.com"
"passwoerd" : "qwertyu"
}
import { Controller, Post, Body } from '@nestjs/common';
@Controller('users')
export class UsersController {
@Post()
createUser(@Body('email') email: string, @Body('password') password: string) {
// 유저 생성 로직 구현
}
}
DTO 이용
아래이 DTO를 이용하여 같은 방식을 이용하여 데이터를 받을 수 있다.
createdUser.dto.ts
export class CreateUserDto {
email: string;
password: string;
}
....
@Post()
create(@Body() createUserDto: CreateUserDto) {
// 요청 본문 데이터 사용
const { email, password } = createUserDto;
....
Query
.....
@Get()
// "http://localhost:3000/users?page=1&limit=2"
findAll(@Query('page') page: number, @Query('limit') limit: number) {
// Query Parameter 사용
console.log('Page:', page); // 1
console.log('Limit:', limit); // 2
.....
Dto 를 사용하여
@Query('page') page: number, @Query('limit') limit: number
→@Query() findAllUserDto: FindAllUserDto
Param
import { Controller, Get, Param } from '@nestjs/common';
@Controller('users')
export class UsersController {
@Get(':id') // users/ 1
findOne(@Param('id') id: string) {
// Path Variable 사용
console.log('User ID:', id);
// 특정 유저 조회 로직 구현
}
}
Headers
....
@Get()
findAll(@Headers('authorization') token: string) {
// 헤더 사용
console.log('Authorization token:', token);
// 유저 조회 로직 구현
}
}
헤더에 있는 내용을 받아 올때 key 값이 일치해야 한다\
참고자료
https://docs.nestjs.com/controllers