Nest.js 기본 구성

윤태호·2023년 2월 10일
0

Nest(BackEnd)

목록 보기
2/3

저번에 Controller의 설명을 이어서 글을 시작할려고 합니다.

Cotroller(2)

저번에는 Controller가 어떤 역할을 하는지에 대한 간단한 설명과 @Controller와 함께 사용하는 예시 정도만 보고 마쳤습니다.
이제부터 Controller에 대해 좀 더 알아보도록 하겠습니다.

@Controller() #Controller decorate에 상위 URL경로를 지정할 수 있습니다.
export class foodController{
  @Get()
  create(): string{
		return 'menu'  
  }
  @Post()
  cook(@Request() req: Request):{
  }
  • @Controller에 직접 경로 접두사를 설정할 수 있습니다.예를들어 'food'로 입력하게 되면 @GET @POST 에 경로를 입력할 때는 접두사인 food를 생략할 수 있습니다. 추가적으로 @GET @POST 말고도 @Delete @Put등 다양한 처리가 가능한 데코레이터가 존재합니다.

이번에는 과연 라우팅 후에 @GET, Post 같은 요청을 주고 받을 때 우리는 어떻게 객체를 주고 받을지에 대해 얘기해보겠습니다.

  • @Requset(요청 객체)
@Controller('cats')
export class CatsController {
  @Get()
  findAll(@Req() request: Request): string {
    return 'This action returns all cats';
  }
}

위의 코드를 보면 우리는 @Req를 통해 request 객체를 처리 할 수 있습니다.@Req는 요청의 전문 header, body, 쿼리문자열, 매개변수 모두를 받아옵니다.Nest에서는 이처럼 전문말고 각각 필요할 때마다의 데코레이터를 제공합니다.

  • @Response(응답 객체)
    Requset객체와 같이 사용되며, 요청에 대한 응답을 위한 객체를 처리하거나, 메서드를 처리할 때 사용됩니다. 아래와 같이 작성 할 수 있습니다.
    import { Controller, Get, Response } from '@nestjs/common';
    import { Response } from 'express'; // 이 부분에서 에러
    @Controller('cats')
    export class CatsController {
     @Get()
     findAll(@Response() res: Response) {}
    }
    // 아니면
    import { Controller, Get, Response } from '@nestjs/common';
    @Controller('cats')
    export class CatsController {
     @Get()
     findAll(@Response() res: any) {}

다음 편에 이어서 Controller에서 좀 더 다양한 처리를 보여드리도록 하겠습니다.

profile
성장하는것을 제일 즐깁니다.

0개의 댓글