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] docs: GitHub 연동, 자신이 만든 리뷰 그룹 목록 조회 API 문서 작성 #1014

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

donghoony
Copy link
Contributor


아직 안 됐습니다~

우선 나의 리뷰 그룹 목록 보기만 만들어두었어요

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

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

  • 더 나은 네이밍이 있다면 말씀해주세요 ~

Copy link

github-actions bot commented Dec 19, 2024

Test Results

161 tests  +4   158 ✅ +4   4s ⏱️ ±0s
 60 suites +2     3 💤 ±0 
 60 files   +2     0 ❌ ±0 

Results for commit 22827a3. ± Comparison against base commit 69b507a.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@nayonsoso nayonsoso left a comment

Choose a reason for hiding this comment

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

아루를 위한 보충 설명

Comment on lines +16 to +20
@GetMapping("/v2/members/profile/mine")
public ResponseEntity<ProfileResponse> getProfile() {
ProfileResponse response = memberService.getProfile();
return ResponseEntity.ok(response);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

profile 에 s 를 붙일까말까 고민했는데, 리소스라기보다 특성에 가깝다 생각해서 안붙였습니다.
e.g. profile 이 reviews/detail 에서 detail 과 비슷하다 생각했어요!

Copy link
Contributor

Choose a reason for hiding this comment

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

URI 다시 한번 논의해보자고 말 했지만, 기록상 남깁니다.

사용자의 프로필을 조회하는데 uri 계층이 너무 길다고 생각해요.
그리고 mine 이라는 표현이 자원보다 호출자에게 조금 더 집중된 표현이라고 생각해서 /v2/members/profile가 더 적절해 보입니다.

Copy link
Contributor

Choose a reason for hiding this comment

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

  1. 나중 일이긴 하지만, '다른 사람의 프로필 조회'와 같은 기능이 추가된다면 /v2/members/profile 가 헷갈릴 거라 생각했어요😓

  2. 자원에 완전 집중한다면 차라리 /v2/members/{memberId}/profile 가 적합할 수도 있겠지만,,
    이 api 는 세션으로만 호출하는 것이기 때문에 클라이언트가 id 를 모를것이라,
    호출자를 고려할 수 밖에 없는 것 같아요.

하지만 이 uri 자체에 대해서 주장이 강한건 아니라, 다른 사람들도 테드의 의견에 동의하면 그대로 따라갈게요!
빠른 의견 취합을 위해서 디코에 바로 올리겠습니다 💁🏻‍♀️

@donghoony donghoony marked this pull request as ready for review December 20, 2024 04:57
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.

아루 산쵸 몇개 질문 남겨요~~🔎


import java.time.LocalDate;

public record ReviewGroupDetailResponse(
Copy link
Contributor

Choose a reason for hiding this comment

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

이전에 내가 받은 리뷰 보기에서는
목록을 List, 목록의 각 카드를 element라고 네이밍했던 것 같은데 통일은 필요없을까요?
저는 Detail이라고 하니까 클릭해서 들어가면 뜨는 상세 화면을 떠올리게 돼서요!

Copy link
Contributor

Choose a reason for hiding this comment

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

오~ 네이밍 통일! 좋은 지적이네요!

지금 목록을 응답하는 곳은 [내가 받은 리뷰] 밖에 없는데, 여기랑 통일해주면 좋을 것 같아요.
[내가 받은 리뷰] 에서는 아래와 같이 되어있는데,,,,

  • 목록 : ReceivedReviewsResponse
  • 목록의 각 요소 : ReviewListElementResponse

사실 이것도 수정하면 좋겠거든요..? 😅
목록을 응답하는 dto 네이밍을 아래와 같이 통일하는게 어떤가요?

  • 목록 : ___List Response
    • 내가 받은 리뷰 목록 : ReceivedReviewListResponse
    • 내가 만든 리뷰 그룹 목록 : ReviewGroupListResponse
  • 목록의 각 요소 : ___ListElement Response
    • 내가 받은 리뷰의 각 요소 : ReceivedReviewElementResponse
    • 내가 만든 리뷰 그룹의 각 요소 : ReviewGroupListElementResponse

Copy link
Contributor Author

Choose a reason for hiding this comment

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

페이지네이션이니까 Page가 들어가면 어떨까요..? PageElement와 같이요

Copy link
Contributor

Choose a reason for hiding this comment

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

@donghoony 그럼
목록 : PageResponse / 요소 : PageElement 말씀인가요?

이것도 사실 엄청 논의할건 아니라 생각해서, 빠른 취합을 위해 다수결로 결정하는게 좋을 것 같네요!

import java.util.List;

public record ReviewGroupListResponse(
boolean isLastPage,
Copy link
Contributor

Choose a reason for hiding this comment

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

내가 받은 리뷰와 동일하게 무한스크롤 구현을 생각해서요~ lastReviewId 필드는 필요하지 않을까요?

Copy link
Contributor

@nayonsoso nayonsoso Dec 21, 2024

Choose a reason for hiding this comment

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

사실 일반적인 사용자가 무한 스크롤이 필요할 정도로 많은 리뷰 그룹을 만들 것이라고 생각되진 않는데요..! 🤔
그럼에도 [통일성 / 악의적인 무리한 요청 방지]를 위해서 무스를 추가해줘야 하려나요!
일단 다른 분들의 의견도 들어보겠습니다
@donghoony @Kimprodp

Copy link
Contributor Author

Choose a reason for hiding this comment

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

무한 스크롤 / 페이징을 여러 군데에서 사용할 것으로 보이는데, 따로 함수로 빼야할 것 같기도 하고.. 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

페이징 적용해서 나쁠건 없다고 생각합니다~
현재 내용은 한번에 보내주는 걸로 설계한 것으로 보이는데 isLastPage 는 다른 용도가 있나요?

Copy link
Contributor

Choose a reason for hiding this comment

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

그럼 페이징 적용하는 것으로 하겠습니다👍

@Kimprodp
isLastPage 를 내려주면 클라이언트 측에서 '이게 마지막 페이지이구나, 더 이상 요청을 보내면 안되겠구나'를 알 수 있습니다.
따라서 더 이상 로딩이 안되게 하거나 / ui 면에서 차이를 둘 수 있습니다.
이를 위해서 내려주고 있습니다!

Copy link
Contributor

Choose a reason for hiding this comment

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

아 제가 물어본건 페이징이 안되어있는데 저 필드가 있어서 물어본거였슴당

Comment on lines +22 to +28
@PostMapping("/v2/auth/github")
public ResponseEntity<Void> authWithGithub(
@Valid @RequestBody GithubCodeRequest request,
HttpServletRequest httpRequest
) {
return ResponseEntity.ok().build();
}
Copy link
Contributor

Choose a reason for hiding this comment

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

산초가 올려준 디스커션의 인증 과정중 아래의 1~3번을 이 메서드에서 모두 하는것인지 궁금해요!(아직 구현이 안해서 헷갈려서 물어봅니당)

  1. auth code를 받음
  2. 그걸로 깃헙에 accessToken을 요청함
  3. 받은 accessToken으로 깃헙에 사용자의 정보를 요청해서 세션을 설정해 응답함

Copy link
Contributor

Choose a reason for hiding this comment

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

네 맞아요👍

Copy link
Contributor

Choose a reason for hiding this comment

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

혹시 이때 사용자 정보나 로그인 정보같은 것은 안내려줘도 괜찮나요?

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.

리뷰 몇 개 남깁니다!

Comment on lines +16 to +20
@GetMapping("/v2/members/profile/mine")
public ResponseEntity<ProfileResponse> getProfile() {
ProfileResponse response = memberService.getProfile();
return ResponseEntity.ok(response);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

URI 다시 한번 논의해보자고 말 했지만, 기록상 남깁니다.

사용자의 프로필을 조회하는데 uri 계층이 너무 길다고 생각해요.
그리고 mine 이라는 표현이 자원보다 호출자에게 조금 더 집중된 표현이라고 생각해서 /v2/members/profile가 더 적절해 보입니다.

import java.util.List;

public record ReviewGroupListResponse(
boolean isLastPage,
Copy link
Contributor

Choose a reason for hiding this comment

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

페이징 적용해서 나쁠건 없다고 생각합니다~
현재 내용은 한번에 보내주는 걸로 설계한 것으로 보이는데 isLastPage 는 다른 용도가 있나요?

String projectName,
LocalDate createdAt,
String reviewRequestCode
) {
Copy link
Contributor

Choose a reason for hiding this comment

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

프로젝트 목록에서 해당 프로젝트에 리뷰가 몇 개 작성되어있는지도 같이 제공하면 어떨까요?

Copy link
Contributor

Choose a reason for hiding this comment

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

오~ 괜찮은데요? 이건 프론트 분들이랑 이야기를 해봐야 할 것 같아요!

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.

리뷰 확인 및 추가 코멘트 남겼어요 확인 부탁합니다(__)

import java.util.List;

public record ReviewGroupListResponse(
boolean isLastPage,
Copy link
Contributor

Choose a reason for hiding this comment

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

아 제가 물어본건 페이징이 안되어있는데 저 필드가 있어서 물어본거였슴당


import java.util.List;

public record ReviewGroupListResponse(
Copy link
Contributor

Choose a reason for hiding this comment

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

어떤 회원의 그룹 목록인지 확인할 수 있도록 memberId 필드에 추가하는 건 어떻게 생각하시나요?

#1017 (comment)
저희가 작업한 dto와 같은 이유입니다~

Comment on lines +22 to +28
@PostMapping("/v2/auth/github")
public ResponseEntity<Void> authWithGithub(
@Valid @RequestBody GithubCodeRequest request,
HttpServletRequest httpRequest
) {
return ResponseEntity.ok().build();
}
Copy link
Contributor

Choose a reason for hiding this comment

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

혹시 이때 사용자 정보나 로그인 정보같은 것은 안내려줘도 괜찮나요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

[BE] GitHub OAuth, 자신이 만든 그룹 목록 API 문서를 생성한다.
4 participants