일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 타입스크립트
- AWS
- CSS
- 리액트
- 솔리디티
- kubernetes
- 파이썬
- react
- es6
- docker
- 백엔드
- 프론트엔드
- 블록체인
- 컴퓨터공학
- HTML
- k8s
- 가상화
- TypeScript
- BFS
- 쿠버네티스
- 클라우드
- 이슈
- VUE
- JavaScript
- next.js
- 이더리움
- 백준
- 알고리즘
- 웹
- 자바스크립트
Archives
- 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 |
---|
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆