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

2차 과제 코드 #2

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

2차 과제 코드 #2

wants to merge 1 commit into from

Conversation

eunseo5343
Copy link
Contributor

이 주의 과제

등록한 모든 멤버가 List로 반환되는 API 구현 하였습니다..!

MemberController.java

@GetMapping
public ResponseEntity<List<MemberFindDto>> getAllMembers() {
    return ResponseEntity.ok(memberService.getAllMembers());
}

설명: @GetMapping을 사용하여 /api/v1/member 경로로 GET 요청을 받고, 서비스 계층에서 반환된 모든 멤버의 리스트를 200 OK 응답과 함께 반환

MemberService.java

public List<MemberFindDto> getAllMembers() {
    return memberRepository.findAll().stream()
            .map(MemberFindDto::of)
            .collect(Collectors.toList());
}

설명: 데이터베이스에서 모든 멤버를 조회하여 각 멤버를 MemberFindDto 객체로 변환 후, 이를 리스트로 수집해 반환

에 코드 추가해 주었습니다..

결과로는

localhost:8080/api/v1/member
스크린샷 2024-04-17 오전 3 01 59

다음과 같이 확인할 수 있었습니다.

요구사항 분석

[POST] 멤버 가입

  1. 어떤 API 인가요?
    POST 멤버 가입
    사용자의 정보를 받아서 Member 객체 생성 후 DB에 저장

  2. Request
    Path Parameter

Request Header

[POST] http://localhost:8080/api/v1/member

Request Body
image

{
    "name" : "백은서",
    "part" : "SERVER",
    "age" : 24
}
  1. Response
    ✨ Response Body
image
{           
}

[GET] 멤버 조회

1.         어떤 API 인가요?
[GET] 멤버 조회
사용자 id를 Path variables로 받아 해당 멤버 정보 반환
 
2.         Request
Path Parameter
 
image

[GET] http://localhost:8080/api/v1/member/:memberId
 
Request Body
 
3.         Response
✨ Response Body
 
image

{
    "name": "백은서",
    "part": "SERVER",
    "age": 22
}

[DELETE] 멤버 삭제

1.         어떤 API 인가요?
DELETE 멤버 삭제
사용자 id를 Path variables로 받아 해당하는 멤버 정보를 DB에서 삭제
 
2.         Request
Path Parameter
 
image

 
[DELETE] http://localhost:8080/api/v1/member/:memberId
 
Request Body

image

 
3.         Response
✨ Response Body
 

{           
}

 
 
 

[GET] 멤버 리스트 조회

1.         어떤 API 인가요?
[GET] 멤버 리스트 조회
 
등록한 모든 멤버가 List로 반환되는 API
 
2.         Request
Path Parameter
 
image

 
[GET] http://localhost:8080/api/v1/member/list
 
Request Body
 
3.         Response
✨ Response Body
 
image

[
    {
        "name": “백은서”,
        "part": "SERVER",
        "age": 22
    },
    {
        "name": “백은서”,
        "part": "SERVER",
        "age": 22
    },
    {
        "name": “백은서”,
        "part": "SERVER",
        "age": 22
    }
]

구현 고민 사항

postman에서 자꾸 오류가 뜨다가 이유는 모르겠는데 해결이 되었읍니다...

질문있어요!

Copy link

@tkdwns414 tkdwns414 left a comment

Choose a reason for hiding this comment

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

과제하느라 수고하셨습니당. 깃도 배우시느라 더더 바쁘셨겠네요!

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository

Choose a reason for hiding this comment

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

저도 이번 과제를 졸면서 했는지 별 생각 없이 @repository 어노테이션을 달아줬는데 저희가 MemberRepository에서 상속받는 JpaRepository의 구현체인 SimpleJpaRepository에 이미 @repository가 있어서 굳이 적지 않아도 됩니다!

Comment on lines +31 to +33
return MemberFindDto.of(memberRepository.findById(memberId).orElseThrow(
() -> new EntityNotFoundException("ID에 해당하는 사용자가 존재하지 않습니다.")
));

Choose a reason for hiding this comment

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

memberRepository.findById(memberId).orElseThrow(
                () -> new EntityNotFoundException("ID에 해당하는 사용자가 존재하지 않습니다.")
)

멤버 id로 멤버를 가져올 때 멤버가 존재하는지 확인하고 없으면 예외를 터뜨리는 로직은 재사용될 가능성이 높습니다. 그래서 MemberRepository 인터페이스에 default 메소드를 정의하거나 MemberService내에 해당 부분을 메소드로 따로 분리하는 것도 좋을 것 같습니당.
그렇게 된다면 필요한 곳에서 동일한 예외 메시지를 반환하게 쉽게 관리할 수 있겠죠?

Copy link
Contributor

@sohyundoh sohyundoh left a comment

Choose a reason for hiding this comment

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

git 익히시는데도 어려우셨을텐데 과제하느라 고생하셨습니다!

상준오비가 이미 좋은 리뷰를 많이 달아주셨네요! 구경하다 갑니다!

화이팅입니다-!

Copy link
Member

@chaewonni chaewonni left a comment

Choose a reason for hiding this comment

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

설명이랑 api명세서를 자세하게 작성해주셔서 읽기 좋았습니당
과제하느라 수고 넘 많으셨습니다!!! 😺😺

@PicturePark1101
Copy link

명세서를 아주 자세하게 작성해주셨네요 저도 배우고 갑니다 고생하셨습니다 👍

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

Successfully merging this pull request may close these issues.

[Week 02] 2주차 과제
5 participants