공부 내용 정리

API 요청 처리 방식

blockchoin 2025. 7. 31. 17:04

GET, POST 메소드부터 @Query, @Param, @Body 데코레이터의 용도까지 실제 예제를 통해 자세히 알아보겠습니다.


1. HTTP 메소드: GET vs POST

  GET POST
용도 데이터를 가져올 때 데이터를 생성하거나 변경할 때
데이터 위치 URL (주소창) 요청 본문(Body)
보안성 낮음 (주소에 노출) 상대적으로 높음
용량 제한적 (URL 길이 제한) 크고 자유로움
즐겨찾기/캐시 가능 불가

2. NestJS에서 사용하는 데코레이터

(1) @Query – URL 쿼리스트링에서 데이터 받기

 
URL 예시: GET /users?page=2&limit=10 @Get('users') getUsers(@Query('page') page: number, @Query('limit') limit: number) { return `페이지: ${page}, 제한: ${limit}`; }
  • 주소 뒤에 ?key=value 형식
  • 선택적 옵션, 검색 필터, 페이징 처리 등에 사용

(2) @Param – URL 경로 변수 받기

URL 예시: GET /users/123 @Get('users/:id') getUserById(@Param('id') id: string) { return `사용자 ID는 ${id}`; }
  • 경로 중간에 들어가는 값
  • 주로 리소스 식별자(ex. 유저 ID, 게시글 ID)에 사용

(3) @Body – POST나 PUT의 요청 본문에서 데이터 받기

// POST /users @Post('users') createUser(@Body() userData: { name: string, age: number }) { return `사용자 ${userData.name} 등록 완료`; }
  • POST, PUT, PATCH와 함께 사용
  • 복잡하고 구조화된 데이터를 받기에 적합

3. 사용 예시 비교


4. GET과 POST의 차이

물론 GET도 파라미터를 통해 데이터를 보낼 수 있지만,

  • URL 길이 제한(대부분 브라우저에서 2048자)
  • 보안 문제 (주소에 민감 정보 노출 가능)
  • 복잡한 구조를 담기 어려움

이런 이유로 많은 데이터를 보낼 땐 반드시 POST를 사용합니다.

 

'공부 내용 정리' 카테고리의 다른 글

RESTful 설계란?  (1) 2025.08.04
NestJS의 Interceptor란  (0) 2025.08.01
DTO와 Exception 이란?  (1) 2025.07.30
NestJS와 스마트 컨트랙트의 연동  (2) 2025.07.29
Nest.js란?  (0) 2025.07.28