[NestJS] Controller(3) - Resources, Route wildcards, Status code, Headers

cabbage·2023년 4월 19일
0

NestJS

목록 보기
6/17
post-thumbnail

NestJS 공식문서의 Controller 개념 공부 3번째 포스트로, Controller의 Resources, Route wildcards, Status code, Headers 주제로 작성한다.

Resources

이전에 고양이 리소스(GET 라우트)를 가져오기 위한 엔드포인트를 정의했었다. 새로운 레코드를 생성하는 엔드포인트를 제공하려면 POST 핸들러를 생성해야 한다.

// cats.controller.ts

import { Controller, Get, Post } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Post()
  create(): string {
    return 'This action adds a new cat';
  }

  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}

Nest는 모든 표준 HTTP 메서드를 위한 데코레이터를 제공한다. @Get(), @Post(), @Put() @Delete(), @Patch(), @Options(), @Head()가 있다. @All() 데코레이터를 사용하면 모든 HTTP 메서드를 처리하는 엔드포인트를 정의할 수 있다.

Route wildcards

Nest는 패턴 기반 경로도 지원한다. 예를 들어, 별표(*)가 와일드카드로 사용되는데, 별표는 어떤 문자의 조합이라도 매치시킨다.

@Get('ab*cd')
findAll() {
  return 'This route uses a wildcard';
}

ab*cd 라우트 경로는 abcd, ab_cd, abecd 등과 매치된다. ?, +, *, () 문자가 라우트 경로에 사용될 수 있으며, 정규 표현식의 하위 집합이다. 하이픈(-)과 점(.)은 문자 그대로 문자열 기반 경로로 해석된다.

Status code

응답 상태 코드는 항상 기본적으로 200이다.(POST 요청의 경우 201이 기본) 기본적인 응답 상태 코드 200을 변경하려면 핸들러 레벨에서 @HttpCode() 데코레이터를 추가하면 된다.

@Post()
@HttpCode(204)
create() {
  return 'This action adds a new cat';
}

상태 코드는 정적으로 결정되지 않고 여러 요인에 따라 결정된다. 이런 경우, 라이브러리-특정 응답 객체(@Res() 주입)를 사용할 수 있다.

Headers

커스텀 응답 헤더를 지정하려면 @Header() 데코레이터를 사용하거나 라이브러리-특정 응답 객체를 통해 직접 res.header() 호출할 수 있다.

@Post()
@Header('Cache-Control', 'none')
create() {
  return 'This action adds a new cat';
}

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글