Request
를 받아서 Response
를 돌려주는 함수이다.Routing
을 통해 어떤 controller
가 어떤 요청을 받을 지 결정한다.Class
와 Decorator
를 사용해서 controller에 기능을 더할 수 있다.@Controller()
데코레이터를 사용한다. path
) 접두사 cats를 지정한다. Route
집합을 그룹화하도록 선택할 수 있다. @Controller()
데코레이터에서 경로(path) 접두사 customers를 지정하여 파일의 각 라우트에 대해 경로(path
)의 해당부분을 반복할 필요가 없다.cats.controller.ts
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}
cats.controller.ts
import { Controller, Get, Req } from '@nestjs/common';
import { Request } from 'express';
@Controller('cats')
export class CatsController {
@Get()
findAll(@Req() request: Request): string {
return 'This action returns all cats';
}
}
number, string, boolean
같은 primitive의 경우 그대로 값 전달한다.
object, array
같은 경우 JSON
으로 직렬화해서 내려준다.
🤔primitive를 JSON으로 반환하고 싶다면?
🖐object를 만들어서 리턴하면 된다.
🤔Express의 reponse 객체에 직접 접근하고 싶을 때는, 위의 @Res()
데코레이터로 주입받아서 쓰고 싶다면?
🖐res.send()
res.json()
cats.controller.ts
@Get(':id')
findOne(@Param() params): string {
console.log(params.id);
return `This action returns a #${params.id} cat`;
}
@Get(':id')
findOne(@Param('id') id: string): string {
return `This action returns a #${id} cat`;
}
요청/응답 다중스레드 상태 비저장
(Multi-Threaded Stateless) 모델을 따르지 않는다. 따라서 싱글톤 인스턴스를 사용하는 것은 애플리케이션에 완전히 안전하다.싱글톤 인스턴스
전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서 든지 참조할 수 있도록 하는 패턴이다. 생성자가 아무리 여러번 호출되더라도 실제로 생성되는 객체는 하나이다.
create-cat.dto.ts
export class CreateCatDto {
name: string;
age: number;
breed: string;
}
cats.controller.ts
@Post()
async create(@Body() createCatDto: CreateCatDto) {
return 'This action adds a new cat';
}
@
데코레이터로 시작해서 @
데코레이터로 끝난다.