$ nest g controller [name]
@Controller()
데코레이터 사용@Controller('cats')
export class CatsController {
// GET/cats/profile 요청에 대한 라우트 매핑 생성
@Get('profile')
findAll(): string {
return 'This action returns all cats';
}
}
@Get()
, @Post()
, @Put()
, @Delete()
, @Patch()
, @Head()
, @All()
*
: 와일드카드로 사용ab*cd
경로: abcd
, ab_cd
, abecd
등과 일치?
, +
, ()
등 사용 가능@Param()
데코레이터를 사용하여 접근 가능@Get(':id')
findOne(@Param() params): string {
return `This action returns a #${params.id} cat`;
}
@Get(':id')
findOne(@Param('id') id: string): string {
return `This action returns a #${id} cat`;
}
@Controller({ host: '...' })
: 들어오는 요청의 HTTP 호스트가 특정 값과 일치하도록 설정@HostParam()
데코레이터 사용해 호스트 매개변수에 접근 가능@Controller({ host: ':account.example.com' })
export class AccountController {
@Get()
getInfo(@HostParam('account') account: string) {
return account;
}
}
@HttpCode(...)
데코레이터를 이용하여 변경 가능@Res()
또는 @Next()
데코레이터를 사용하여 라이브러리별 응답 객체 사용@Post()
create(@Res() res: Response) {
res.status(HttpStatus.CREATED).send();
}
// Nest 표준 응답 처리와 호환 가능
@Get()
findAll(@Res({ passthrough: true }) res: Response) {
res.status(HttpStatus.OK);
return [];
}
@Header()
데코레이터 사용@Post()
@Header('Cache-Control', 'none')
create() {
return ' ... ';
}
핸들러가 클라이언트 요청 세부정보에 엑세스하는 경우
@Req()
데코레이터를 통해 요청 객체에 접근
HTTP 요청에 대한 쿼리 문자열, 매개변수, 헤더 등의 속성을 바로 사용할 수 있는 전용 데코레이터 존재
// create-cat.dto.ts
export class CreateCatDto {
name: string;
age: number;
}
// cats.controller.ts
@Post()
async create(@Body() createCatDto: CreateCatDto) {
return 'This action adds a new cat';
}
@Redirect()
데코레이터 사용url
, statusCode
(default: 302) 인수 (둘 다 선택사항)@Redirect
데코레이터의 모든 인수를 재정의@Module()
데코레이터 내에 controllers
배열에 해당 컨트롤러 포함// app.module.ts
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
@Module({
controllers: [CatsController],
})
export class AppModule {}