공식문서에 있는 개략적인 설명을 살펴보고 문서에 있는 예제중 몇개만 테스트할 것이다.
Routing
Controllers는 리퀘스트와 리스폰스 데이터를 처리한다
@Controller() 데코레이터로 기본 Controller( basic controller)를 지정 가능하다
그럼 컨트롤러를 만들어 보자!
nest g controller cats
명령으로 cats컨트롤러를 만들고 /board/src/cats/cats.controller.ts에 아래와 같이 작성해보자
//cats.controller.ts
import { Controller, Get } from '@nestjs/common'; //모듈 임포트
@Controller('cats')//컨트롤러 localhost:3000/[여기들어가는거]
export class CatsController {
@Get()
findAll(): string {//function localhost:3000/cats/[여기들어가는거]
return 'This action returns all cats';
}
}
작성후 RUN!
npm run start
localhost:3000/cats접속시 입력한 문자열 This action returns all cats이 리스폰스 되는걸 확인할 수 있다
개념
응답과 관련하여
Standard(표준)
Request object
import { Controller, Get, Req, Param } from '@nestjs/common';
import { Request } from 'express';
@Controller('cats')
export class CatsController {
@Get()
myID(@Req() params): string {
return 'my id is '+params.query.id;
}
}
아래는 Request Object의 종류이다
@Request(), @Req() 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]
@Ip() req.ip
@HostParam() req.hosts
Route wildcards
@Get('ab*cd')
findAll() {
return 'This route uses a wildcard';
}
Status code
@Post()
@HttpCode(204)
create() {
return 'This action adds a new cat';
}
Headers
@Post()
@Header('Cache-Control', 'none')
create() {
return 'This action adds a new cat';
}
Redirection
@Get()
@Redirect('https://nestjs.com', 301)
Route parameters
@Get(':id')
findOne(@Param() params): string {
console.log(params.id);
return `This action returns a #${params.id} cat`;
}
비동기
@Get()
async findAll(): Promise<any[]> {
return [];
}
위코드는 정상 작동한다고한다
++Library-specific
import { Controller, Get, Post, Res, HttpStatus } from '@nestjs/common';
import { Response } from 'express';//응답을 위핸 express에서 Response 객체 임포트
@Controller('cats')
export class CatsController {
@Get()
create(@Res() res: Response) {//응답을 위한 res객체
res.status(750).send('Library-specific!!');//임의의 750응답코드와 문자열을 반환
}
}