Research/Nest.js

07. Nest.js_RestAPI_응답 데이터 유형과 상태코드

RIEM 2023. 2. 7. 16:05
728x90

응답 데이터 자동 변환

nest.js에서 response로 데이터를 리턴해줄 때, 객체와 배열은 JSON으로 자동 변환해줍니다. 원시타입은 그대로 전달해줍니다.

데이터 변환 유형

  • Number -> Number
  • String -> String
  • Boolean -> Boolean
  • Object -> JSON
  • Array -> JSON
// src/events.controllers.ts
import {
  Body,
  Controller,
  Delete,
  Get,
  Param,
  Patch,
  Post,
} from '@nestjs/common';

@Controller('/events')
export class EventsController {
  // 5개 정도 가볍게 유지하는 것이 좋다
  @Get()
  findAll() {
    // 배열을 반환하여도 클라이언트는 JSON 데이터로 받는다
    return [
      { id: 1, product: 'Jacket' },
      { id: 2, product: 'Pants '}
    ]
  }

  // Param 데코레이터 사용하여 파라미터 가져오기
  @Get(':id')
  findOne(@Param('id') id) {
    return id;
  }

  // Body 데코레이터로 body 값 가져오기
  @Post()
  create(@Body() input) {
    return input;
  }

  @Patch(':id')
  update(@Param('id') identity, @Body() input) { }

  @Delete(':id')
  remove(@Param('id') id) { }
}

상태코드 자동 설정

Screen Shot 2023-02-07 at 3 56 37 PM

Screen Shot 2023-02-07 at 3 58 00 PM

nest.js은 응답 데이터만 자동으로 변환해주는 것이 아닙니다. 상태코드도 자동으로 세팅해줍니다. 우리는 Post 메소드에 상태코드를 지정해주지 않았는데 알아서 201 Created로 세팅해주었습니다.

주요 HTTP의 상태코드는 아래와 같습니다.

  • Success(200-299)
    • 200 OK
    • 201 Created
    • 204 No Content
  • Redirects(300-399)
    • 301 Moved Permanently
    • 302 Found
    • 304 Not Modified
  • Client Error(400-499)
    • 400 Bad Request
    • 401 Unauthorized
    • 403 Forbidden
    • 404 Not Found
    • 405 Method Not Allowed
  • Server Error(500-599)
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout

상태코드 직접 설정

// src/events.controllers.ts
import { Body, Controller, Delete, Get, Param, Patch, Post, HttpCode } from '@nestjs/common';

...
    @Delete(':id')
    @HttpCode(204)
    remove(@Param('id') id) { }
...

만약 상태코드를 직접 설정하고 싶다면 어떻게 해야할까요? HttpCode(코드) 데코레이터를 사용하면 됩니다. 참 쉽죠?

728x90