| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 알고리즘
- CSS
- AWS
- react
- 클라우드
- next.js
- kubernetes
- 백준
- JavaScript
- 리액트
- 솔리디티
- k8s
- 블록체인
- 백엔드
- es6
- TypeScript
- docker
- 이슈
- 타입스크립트
- 파이썬
- 쿠버네티스
- 가상화
- VUE
- 컴퓨터공학
- 자바스크립트
- 웹
- 이더리움
- HTML
- 프론트엔드
- BFS
- Today
- Total
즐겁게, 코드
컨트롤러의 데코레이터 본문
API의 엔드포인트를 관리하는 컨트롤러는 URL에 주어지는 파라미터를 어떻게 처리할까요?
@Get()
getUserById () {
// 어떻게 파라미터에서 유저 아이디를 추출할 수 있을까요?
return `returned user: ${userId}`
}
Nest.js는 데코레이터 문법을 적극적으로 활용하는데요, 오늘은 컨트롤러가 URL에서 데이터를 추출할 때 사용하는 데코레이터를 살펴보도록 하겠습니다.
@Param 데코레이터
@Param 은 URL의 파라미터를 추출하기 위한 데코레이터입니다.
@Get(":파라미터명")
getUserById(@Param("파라미터명") userId) {
return `returned user: ${userId}`
}
@Get(), @Post() 등 HTTP 요청 메서드의 데코레이터에는 : 을 포함한 파라미터의 이름을 전달하고, @Param() 데코레이터의 인자로는 메서드 데코레이터에 전달했던 파라미터 이름과 동일한 이름을 전달합니다.
// "파라미터명" 에 들어갈 값은 반드시 동일해야 합니다!
@Get(":파라미터명")
getUserById(@Param("파라미터명") id)
그럼 @Param() 데코레이터는 자동으로 URL에서 해당 파라미터를 추출하고, 파라미터의 값을 함수의 인자로 전달할 수 있게 됩니다.


@Body 데코레이터
@Body 는 요청 본문을 획득하기 위한 데코레이터입니다.
@Post()
createUser(@Body() userData) {
const { id, name } = userData;
userList.push({ id, name });
return userList;
}
주로 Post, Patch 등 요청 본문을 사용하는 요청이 들어올 때, @Body 는 요청 본문을 추출해주는 역할을 합니다.
@Body 데코레이터를 사용할 때 주의할 점으로는 기본적으로 JSON 포맷으로 들어오는 요청 본문에 대해서만 추출이 가능하기 때문에, 이외의 타입을 전달받으면 빈 객체로 처리하게 된다는 점에 유의해야 합니다.


@Query 데코레이터
@Query는 쿼리스트링을 추출하기 위한 데코레이터입니다.
@Get("경로명")
searchUser(@Query("쿼리명") username) {
const resultString = username ? `User ${username} found!` : `Invalid name.`;
return resultString;
}
앞서 배운 @Param 데코레이터와 유사하나, @Query는 URL 중 ? 문자로 구분되는 쿼리스트링의 쿼리명과 값을 추출합니다.
이 때, 만약 주어진 쿼리명을 찾지 못한다면 undefined를 반환하게 됩니다.
'💻 백엔드 > Nest.js' 카테고리의 다른 글
| Nest.js 시작하기 : 설치 & 아키텍처 소개 (0) | 2021.10.29 |
|---|