Skip to content

Commit

Permalink
docs: add guide for mission 2 (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
woowabrie authored Apr 29, 2024
1 parent d2bd14b commit cd9fbcb
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
2 changes: 1 addition & 1 deletion reviewer/be-lv2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
## 미션별 리뷰어 가이드

* [방탈출 예약 관리](./roomescape-admin.md)
* [방탈출 사용자 예약](./roomescape-user-reservation.md)
* [방탈출 사용자 예약](./roomescape-member.md)
* [방탈출 예약 대기](./roomescape-wating.md)
* [방탈출 결제/배포](./roomescape-payment.md)

Expand Down
49 changes: 49 additions & 0 deletions reviewer/be-lv2/roomescape-member.md
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 과정에서 필수가 아니지만 이미 미션의 학습 목표를 충분히 달성한 경우 추가 키워드로 제시할 수 있음

0 comments on commit cd9fbcb

Please sign in to comment.