@Get('ranking')
async getRanking() {
return await this.userService.getRanking();
}
간단한 랭킹조회 로직을 만들어 실행하였는데 오류도 아니고, 제대로 된 응답도 아닌 이도저도 아닌 상황이 나타났습니다.
인섬니아가 This action returns a #NaN user (200ok) 라는 방식으로 응답을 해버린 상황입니다.
@Get()
findAll() {
return this.userService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.userService.findOne(+id);
}
//**********************************
@Get('ranking')
async getRanking() {
return await this.userService.getRanking();
}
이유를 찾아보니
생각보다 간단한 이슈였습니다.
Nest에서 라우트는 등록된 순서로 처리됩니다.
따라서 구체적인 경로를 먼저 정의하고, 파라미터를 사용하는 경로는 나중에 정의해야하죠
그렇지 않으면 파라미터의 경로가 구체적인 경로를 덮어쓰거나 저의 케이스 처럼 잘못 매칭되는 상황이 발생할 수도 있습니다.
기존 위의 코드를
@Get()
@Get('ranking')
async getRanking() {
return await this.userService.getRanking();
}
findAll() {
return this.userService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.userService.findOne(+id);
}
이렇게 같은 겟 머서드에 :id를 받는 라우터 다음에 위치시켰습니다
따라서 같은 매서드의 순서상의 문제로 구체적인 ranking이라는 경로가 보다 위에 존재하는 get 매서드의 :id에 덮어 씌워지게 된 것이죠
따라서 저는 위의 코드에서 두번째 매서드로 접속한 꼴이 된 것입니다.
해당 매서드는 아직 완성되지 않아서 위의 This action returns a #NaN user 같은 응답이 도착했던 것입니다.
'내일배움캠프 TIL' 카테고리의 다른 글
(Arrow Function), (Hoisting) 본캠프 TIL (0) | 2025.02.12 |
---|---|
(async/await), (Hoisting) 본캠프 TIL (0) | 2025.02.11 |
(var, let, const), (Promise) 본캠프 TIL 02/10 (0) | 2025.02.10 |
docker에 다해여 본캠프 TIL 02/07 (0) | 2025.02.07 |
EFK란? 본캠프 TIL 02/05 (0) | 2025.02.05 |