-
Notifications
You must be signed in to change notification settings - Fork 0
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
[feat] 2주차 과제 제출 #4
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
영주님 과제하시느라 고생하셨습니다~
질문 주신 것 중에서 예외처리를 어떻게 적절하게 하느냐에 대해 물어보셨는데요
세미나 중에 팟장님이 말씀해주시겠지만 미라 간력하게 말씀을 드리자면
앱잼이나 프로젝트를 하게 되시면 controlleradvice를 통해 지금처럼 trycatch를 로직마다 작성하는 것이 아니라 전역적으로 예외들을 처리하게 됩니다.
예외처리에 관한 더 자세한 내용은 세미나 때 팟장님께 들으면 될 것 같아요!
@Transactional | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/api/v1/member") //어디로 요청이 들어올거냐?를 보는 것. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rest api에서 리소스는 복수형을 쓰는 것을 더 선호한다고 알고 있습니다!
} | ||
|
||
//기존 세미나 코드에서 이 부분 추가 | ||
@GetMapping("/memberList") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
위에서 언급드린 것과 같이
GET /api/v1/members라고 하면
전체 멤버 조회api에서
GET /api/v1/member/memberList라고 할 필요가 없을 것 같습니다.
이미 members라는 복수형에 멤버들을 갖고오겠다는 의미가 포함된 것이니까용
rest에 대해 한번 알아보시는 것을 추천드립니다!!
try { | ||
List<MemberFindDto> members = memberService.findAllMembers(); | ||
return ResponseEntity.ok(members); | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
해당 부분에서는 굳이 예외를 잡을 필요가 없을 것 같습니당
멤버리스트를 검색을 했는데 결과가 없어서 빈리스트를 반환하는 것은 자연스러운 일이니까요
//기존 세미나 코드에서 이 부분 추가 | ||
public List<MemberFindDto> findAllMembers() { | ||
try { | ||
return memberRepository.findAll().stream() | ||
.map(MemberFindDto::of) | ||
.collect(Collectors.toList()); | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
return null; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
위에서 언급드린 것과 마찬가지로 굳이 예외를 잡을 이유 없을 것 같습니다~
Member member = memberRepository.save(Member.create(memberCreate.name(), memberCreate.part(), memberCreate.age())); | ||
return member.getId().toString(); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@transactional(readonly=true)붙이시는 것을 추천드립니다!
memberRepository.delete(member); | ||
} | ||
|
||
//기존 세미나 코드에서 이 부분 추가 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기도 마찬가지로 readonly=true해주세용
영주님 과제 하시느라 너무 고생 많으셨어요 !! 아직 어색한 프레임워크와 언어 문법에 대해 주석으로 개인적으로 정리하시는게 직관적으로 이해를 도와줘서 좋은것 같네요 ! API 명세서는 올바르게 잘 작성 하신것 같아요 ! 나중에 로그인 구현과 같은 API 개발 하실 때는 헤더값을 만질 일이 생길꺼 같아 먼저 공부해보셔도 좋을꺼같습니다 ~ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
먼저 과제하시느라 고생하셨어요!!
제 개인적인 생각으로는 API 명세서를 작성할 때, status 부분에서 단순히 success라고 작성하는 것 보다는 상태코드를 작성해주시면 더 자세하고 깔끔한 명세서가 될 것 같아요!!
수고하셨습니다:)
public ResponseEntity<List<MemberFindDto>> findAllMembers() { | ||
try { | ||
List<MemberFindDto> members = memberService.findAllMembers(); | ||
return ResponseEntity.ok(members); | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
재연님이 이미 언급해주셨지만, 저 또한 이 부분은 굳이 예외 처리를 할 필요는 없을 것 같다는 의견에 동의합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
과제하느라 고생하셨습니다!
이미 좋은 리뷰들이 많이 달려있네요!
구경하고 갑니다 :)
Related Issue 📌
Description ✔️
💬 등록한 모든 멤버가 List로 반환되는 API 구현하기
🔅 Class 구조
🔅 리스트로 받아온 모습
🔅 MemberController
🔅 MemberService
🔅 API 명세서
📓POST API
회원을 등록하는 기능을 제공합니다
📎Request
## *Request syntax*Path Parameter
없음.
Request Header
없음.
Request Body
📎Response
Response Body
📓GET API_Seminar
POST한 목록을 Id 번호로 조회합니다.
📎Request
Request syntax
Path Parameter
{memberId}
Request Header
없음.
Request Body
📎Response
Response Body
📓GET API_Homework
POST한 회원 목록을 리스트로 모두 조회합니다.
📎Request
Request syntax
Path Parameter
/memberList
Request Header
없음.
Request Body
없음.
📎Response
Response Body
📓 DELETE API
목록에서 회원의 Id로 DELETE 를 수행한다.
📎Request
Request syntax
Path Parameter
{memberId}
Request Header
없음.
Request Body
📎Response
Response Body
To Reviewers
📝 세미나에서 처음 접한 애노테이션과 표현들이 많아서, 관련된 내용을 찾아보고 코드에 주석을 달면서 리마인드 하며 익히는 것에 집중했습니다!
📝 API 명세서가 올바르게 작성된 것이 맞는지 궁금합니다!
📝 풀 리퀘스트에서 과제 설명을 깔끔하게 구성할 수 있는 법에 대해서 공부(?)가 조금 필요할 것 같습니다.
📝 예외처리를 적절하게 하려면 어떤 것을 고려해보아야 하나요?