Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] refactor: 기존 api가 리뷰 그룹 정보를 포함하도록 수정 #1050

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

nayonsoso
Copy link
Contributor

@nayonsoso nayonsoso commented Jan 11, 2025


🚀 어떤 기능을 구현했나요 ?

  • 로그인 체계를 구상하다가 우리가 아주 중요한 것을 놓치고 있다는 것을 알게되었습니다💀
  • 이전까지는 세션으로 ReviewGroup이 식별되었으나, 회원이 도입되면서 세션 : 리뷰그룹 이 1:1대응이 되지 않게 되었습니다.
    그래서 몇가지 api 에 ❗️리뷰 그룹에 대한 정보를 추가해야 합니다❗️
    예를 들어 하이라이트를 추가하는 POST /highlight의 경우,
    회원이 이를 호출한다고 하면 "어떤 리뷰 그룹(프로젝트)에 대한 하이라이트 추가인지"를 전달해줄 정보가 필요합니다.
    변경이 필요한 uri 들은 아래와 같습니다.
    • 형광펜 하이라이트 : POST /highlight → /groups/{id}/highlight
    • 받은 리뷰 목록 조회 : GET /reviews → /groups/{id}/reviews
    • 받은 리뷰 요약 조회 : GET /reviews/summary → /groups/{id}/reviews/summary
    • 받은 리뷰 섹션 별 모아보기 : GET /reviews/gather → /groups/{id}/reviews/gather
    • 리뷰 그룹 요약 조회 : GET /groups → /groups/{id}
    • 섹션 이름 조회 : GET /sections → /groups/{id}/sections

🔥 어떻게 해결했나요 ?

  • 어떻게 group에 대한 정보를 전달하게 할지 고민을 많이 했습니다. 시도해봤던 것들은 아래와 같습니다.
  1. PathVariable : 가장 먼저 떠올린 방법입니다. 형광펜, 리뷰, 섹션 모두 리뷰그룹의 하위에 있다고 생각해서, 계층적인 uri 를 잘 나타낸다고 생각했습니다. 막상 적용해보니 /groups/1/sections 처럼 다소 uri 가 길어지는 단점이 있었으나, 이정도는 넘어갈만 하다 생각합니다. 그리고 위 6개의 api 들에 모두 적용될 수 있다는 점도 장점입니다. 통일감은 중요한 요소이니깐요.
  2. RequestBody : 하이라이트 요청같은 경우, 정말 적합하다 생각했는데, GET에 사용할 수 없어서 소거했습니다.
  3. RequestParam : ?groupId=1 과 같이 직접 붙여서 확인해보니 다소 어색한 감이 있었습니다.. RequestParam은 원래 필터링이나 페이징에 사용된다고 생각해서 그랬었고, 예를 들어 받은 리뷰 조회의 경우 GET /reviews?groupId=1 보다 GET groups/1/reviews 가 더 적절해보였습니다.

📝 어떤 부분에 집중해서 리뷰해야 할까요?

  • uri 가 적절한지 확인해주세요.

📚 참고 자료, 할 말

  • 바뀐 비지니스 로직도 적용해야 하니 할 일이 산더미입니다.. 🏔️🌋🗻
    간단한 PR이니 이번 코드리뷰는 속도감 있게 갔으면 좋겠습니다.
  • 리뷰 그룹 요약 조회 : GET /groups 부분이 커,테가 작업한 부분이랑 겹칩니다. 아마 테스트 코드에서 컨틀릭 날거예요.
    뭘 먼저 머지하던지 리베이스한 다음 해소하고 머지해야 합니다.

Copy link

Test Results

157 tests   154 ✅  4s ⏱️
 58 suites    3 💤
 58 files      0 ❌

Results for commit 7a52ab2.

Copy link
Contributor

@skylar1220 skylar1220 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

시도한 방법을 적어줘서 비교가 쉬웠어요 고마워요 산초!
해당 api들이 리뷰 그룹을 필요로 하는 상황이 다 다르고, 그에 따라 방식이 다른 건 당연하다고 생각해서 코멘트 남겨요~

@@ -17,8 +18,9 @@ public class HighlightController {

private final HighlightService highlightService;

@PostMapping("/v2/highlight")
@PostMapping("/v2/groups/{reviewGroupId}/highlight")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

request에 포함해서 보내는 것이 자연스러워 보여요. 하이라이트가 리뷰 그룹의 하위라는 게 직관적으로 다가오지 않아서요!

Copy link
Contributor Author

@nayonsoso nayonsoso Jan 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 api들이 리뷰 그룹을 필요로 하는 상황이 다 다르고, 그에 따라 방식이 다른 건 당연하다고 생각해서 코멘트 남겨요~

음 생각해보니 그렇네요..! 🙂↕️
굳이 방식을 통일 할 필요가 없었던 것 같아요.
저는 커비에게 설득되었는데, 다른 분들 의견도 더 들어볼게요!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 동의합니다. 우선은 request에 포함되는 것이 좋겠어요.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

request가 자연스러워 보입니다~

@@ -15,8 +16,9 @@ public class SectionController {

private final SectionService sectionService;

@GetMapping("/v2/sections")
@GetMapping("/v2/groups/{reviewGroupId}/sections")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

섹션이 리뷰 그룹 하위는 아니라고 느껴져요. 리뷰 그룹 request를 받아서 내려주는 게 어떨까요?

Copy link
Contributor Author

@nayonsoso nayonsoso Jan 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

섹션이 리뷰 그룹 하위는 아니라고 느껴져요.

동의합니다.!

리뷰 그룹 request를 받아서 내려주는 게 어떨까요?

이 부분은 조금 고민되는게, Get이 RequestBody 를 받는게 이상해서요😓
사실 제일 논리적인건 /v2/templates/{templateId}/sections 같아서 이걸로 바꾸고 싶은데,
그런데 이렇게 하려면 클라이언트에서 templateId를 알고 있어야 해서
ReceivedReviewsSummaryResponse 에서 templateId 를 포함해서 내려줘야해요.

AS-IS
{"projectName":"우테코","revieweeName":"산초","totalReviewCount":6}

TO-BE
{"projectName":"우테코","revieweeName":"산초","totalReviewCount":6,"templateId":1}

이 방식은 어떤가요?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 Boby보단, /v2/templates/{templateId}/sections 의견에 동의하나, 우선은 템플릿이 하나이고, 템플릿 추가 예정이 아직은 없으니 기존 uri로 냅두고 템플릿 고정값으로 응답 하는게 좋아보입니다.

Copy link
Contributor

@Kimprodp Kimprodp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코멘트 외에 다른 부분에 대한 의견은 없습니다~

@@ -17,8 +18,9 @@ public class HighlightController {

private final HighlightService highlightService;

@PostMapping("/v2/highlight")
@PostMapping("/v2/groups/{reviewGroupId}/highlight")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 동의합니다. 우선은 request에 포함되는 것이 좋겠어요.

@@ -15,8 +16,9 @@ public class SectionController {

private final SectionService sectionService;

@GetMapping("/v2/sections")
@GetMapping("/v2/groups/{reviewGroupId}/sections")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 Boby보단, /v2/templates/{templateId}/sections 의견에 동의하나, 우선은 템플릿이 하나이고, 템플릿 추가 예정이 아직은 없으니 기존 uri로 냅두고 템플릿 고정값으로 응답 하는게 좋아보입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BE] 회원 개념 도입으로 인해 변경된 것을 기존 api 반영한다.
4 participants