-
Notifications
You must be signed in to change notification settings - Fork 367
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
50 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# 방탈출 사용자 예약 | ||
|
||
--- | ||
|
||
## 리뷰어 가이드 | ||
|
||
이번 미션은 방탈출 테마를 예약하는 사용자의 요청을 처리하면서 크루들이 좀 더 현실과 가까운 고민을 할 수 있도록 설계되었습니다. | ||
|
||
- 요청에 대한 해피 케이스만 생각했던 이전 미션과 달리, 사용자가 잘못된 요청을 보낼 수 있는 상황을 고려해보고 이에 대한 검증과 예외 처리를 어떻게 할지 고민하게 됩니다. | ||
- HTTP 프로토콜에 대해 학습하고 이를 API 설계에 적용해 봅니다. 이런 경험을 위해 구현해야 하는 요구사항도 다양해 집니다. | ||
- 단순 조회보다는 조금 더 복잡한 SQL 쿼리를 작성합니다. | ||
|
||
요구사항에 대한 일반적인/보편적인 구현 방식이 있을수는 있지만 (잘 아시다시피) 정답은 없습니다. | ||
크루들이 하나의 정답을 찾는 것처럼 느껴진다면, 반례가 될 수 있는 다른 상황을 제시하고 이에 대한 크루의 생각을 물어봐 주세요. | ||
그리고 이런 과정을 통해 크루들이 본인만의 기준을 세울 수 있도록 도와주세요. | ||
|
||
--- | ||
|
||
## 경험해야할 학습 목표 | ||
|
||
- HTTP 프로토콜에 대한 이해와 구현 | ||
- 요청에 대한 API를 설계하고 구현 | ||
- 사용자 인증 방식이 무엇인지 알고, 이를 코드에 적용 | ||
- 필요한 데이터 조회를 위한 쿼리 작성 | ||
- 테스트 도구를 사용해서 웹 요청/응답에 대해 자동으로 검증 | ||
|
||
--- | ||
|
||
## 리뷰 포인트 | ||
|
||
### 1~3단계 | ||
|
||
- 요구사항에서 발생할 수 있는 예외에 대한 처리가 잘 되어있는가? | ||
- 예를 들어, 시간 관리에서 시간이 중복되는 경우에 대한 처리가 잘 되어있는가? | ||
- @ExceptionHandler 나 @ControllerAdvice를 사용하여 예외 처리를 하였는가? | ||
- API를 보편적으로 이해 가능하게 설계 하였는가? (테마 관리, 예약 추가, 인기 테마 조회) | ||
- 요청에서의 HTTP Method와 URL이 의미에 맞게 사용되었는가? | ||
- 응답에서의 HTTP Status Code가 적절하게 사용되었는가? | ||
- 구현한 기능을 검증할 수 있는 API 레벨의 통합 테스트를 작성하였는가? | ||
- 이전 미션에서는 제공된 테스트 코드를 사용했다면, 이번에는 스스로 작성하는 것이 목표 | ||
- 특정 계층에 대한 단위 테스트는 필수 요구사항이 아님 | ||
|
||
### 4~6단계 | ||
|
||
- 인증/인가의 개념에 대해 정확히 이해하고 구현하였는가? | ||
- 인증 요청과 응답, 이후의 요청에 대한 flow를 잘 설명할 수 있는가? | ||
- 인증/인가 처리 시 HandlerInterceptor, HandlerMethodArgumentResolver 등 스프링이 제공하는 적절한 기능을 사용하였는가? | ||
- SQL 작성 시 JOIN, GROUP BY, ORDER BY, 집계 함수 등을 사용하여 원하는 데이터를 추출할 수 있는가? | ||
- 성능에 대한 고려는 레벨2 과정에서 필수가 아니지만 이미 미션의 학습 목표를 충분히 달성한 경우 추가 키워드로 제시할 수 있음 |