[NestJS] 3. Controller 분석해보기

Hannah·2023년 4월 14일
0

nestjs

목록 보기
3/9

! 읽기 전
이 시리즈에 있는 모든 글은 블로그 지향 기반 개발 & 공식 문서 기반으로 작성되었습니다 내용은 정확하지 않을 수도 있으며, 100% 신뢰하지 마시길 바랍니다


1. Routing (EndPoint)

기능NestSpring
라우팅@Controller()@RequestMapping
http 메소드 지정@Get(), @Post() … 등등@GetMapping(), @PostMapping 등등…

example

패턴 기반 경로도 지원됨
@Get('ab*cd') → 이런식으로

2. Request Object

Nestreq
@Request()req
@Response()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]

여러가지 request를 받는 방법

example

3. Response

  • HttpCode
    • 응답 http code를 바꿔줌
    • @HttpCode(204) → 이렇게 씀
  • Headers
    • 커스텀 응답 헤어 지정
    • @Header('Cache-Control', 'none') → 이렇게 씀
💡 기본적으로 restjs 데코레이터에서 response를 json 데이터로 보내줌 (application/json)
  • example
    @Controller('cats')
    export class CatsController {
    
      @Get()
    	@HttpCode(204)
    	@Header('Cache-Control', 'none')
      findAll() {
        // TODO...
      }
    }

4. Routes order

경로 등록 순서가 있음!!

만약 아래 코드처럼 작성 시에 @Get()에 절 - 대 도달하지 않음

@Controller('cats')
export class CatsController {
  @Get(':id')
  findOne(@Param('id') id: string) {
    return `This action returns a #${id} cat`;
  }

  @Get()
  findAll() {
    // This endpoint will never get called
    // because the "/cats" request is going
    // to be captured by the "/cats/:id" route handler
  }
}

갠적으로 제일 중요한듯 Controller 부분에서.

이렇게 만든 controller는 Module에 controllers에 추가해줍니다

@Module({
  imports: [],
  controllers: [CatsController],
})
export classAppModule {}
profile
backend developer

0개의 댓글