인프런 커뮤니티 질문&답변

김민지열심히해님의 프로필 이미지
김민지열심히해

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 수정 API

PathVariable 사용이유..updateMemberV2메소드 질문입니다.

작성

·

682

·

수정됨

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

MemberApiController 수정시


    /**
     * 수정
     */
    @PutMapping("/api/v2/members/{id}")
    public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id,
                                               @RequestBody @Valid UpdateMemberRequest request) {
        memberService.update(id, request.getName());
        Member findMember = memberService.findOne(id); 
        return new UpdateMemberResponse(findMember.getName(), findMember.getId());

    }
    @Data
    static class UpdateMemberRequest{
        private String name;
    }

    @Data
    @AllArgsConstructor
    static class UpdateMemberResponse{
        private String name;
        private Long id;
    }

수정할때

PathVariable로 url주소에서 맵핑하셨는데

그냥 @PutMapping(""/api/v2/members/")로 하고,

UpdateMemberRequest 클래스에서 id를 필드로 추가한 후 

  @PutMapping("/api/v2/members")
    public UpdateMemberResponse updateMemberV2(
                                               @RequestBody @Valid UpdateMemberRequest request) {
        memberService.update(request.getId(), request.getName());
        Member findMember = memberService.findOne(request.getId()); 
        return new UpdateMemberResponse(findMember.getName(), findMember.getId());

    }
 memberService.update(id, request.getName()); 가 아닌
memberService.update(request.getId(), request.getName());

id를 PathVariable로 받지말고,

request에서 받아서 설계해도 될까요?

PathVariable을 사용하는 이유가 궁금합니다.

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

PathVariable은 RESTful API에서 URL 경로에 변수를 넣어 사용하는 방식입니다. @PathVariable 어노테이션을 사용하여 URL 경로에 들어온 값을 파라미터로 받아올 수 있습니다.

예를 들어, 위의 코드에서 @PutMapping(“/api/v2/members/{id}”)는 “/api/v2/members/{id}” 경로로 PUT 요청이 들어왔을 때 해당 메소드를 실행하라는 의미입니다. 중괄호 안에 있는 “id”는 변수로, 실제 요청된 경로에서 해당 변수에 해당하는 값을 받아옵니다.

즉, 위의 코드에서 updateMemberV2 메소드는 “/api/v2/members/{id}” 경로로 PUT 요청이 들어오면 id 값을 받아와서 사용하게 됩니다. 이렇게 받아온 id 값을 memberService.update() 메소드와 memberService.findOne() 메소드에서 사용하고 있습니다.

이렇게 URL 경로에 변수를 사용하는 이유는 해당 리소스의 식별자를 명확히 표현하기 위해서입니다. 예를 들어, “/api/v2/members/1” 경로로 PUT 요청을 보내면 id가 1인 회원 정보를 수정한다는 의미를 명확하게 표현할 수 있습니다.

더 자세한 내용은 인프런의 질문 게시판이나 자주 하는 질문을 참고해주세요. 감사합니다.

김민지열심히해님의 프로필 이미지
김민지열심히해

작성한 질문수

질문하기