ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #실전2 - 3 회원수정 API
    SPRING-BOOT 2021. 3. 8. 11:41

    [출처] 인프런 김영한 강사님 -실전! 스프링 부트와 JPA 활용2 - 웹 애플리케이션 개발

     

    회원 수정같은 경우에는 RESTfull API style의 PUT을 사용한다.

     

    회원 수정

    /**
     * 수정 API
     */
        @PutMapping("/api/v2/members/{id}")
        public UpdateMemberResponse updateMemberV2(
                @PathVariable("id") Long id,
                @RequestBody @Valid UpdateMemberRequest request){
    
            memberService.update(id,request.getName());
            //update 후 트랜잭션 끝남 (command  단)
            Member findMember = memberService.findOne(id);
            //정상적으로 잘 반영됫는지 쿼리를해서 가져옴(쿼리 단)
            return new UpdateMemberResponse(findMember.getId(), findMember.getName());
            //Response DTO를 통해 반환
    
        }
    
        @Data
        static class UpdateMemberRequest {
           private String name;
        }
    
        @Data
        @AllArgsConstructor
        class UpdateMemberResponse {
           private Long id;
           private String name;
        }

    회원 수정도 DTO를 요청 파라미터에 매핑한다. 그리고 개발은 command단이랑 쿼리단이랑 분리해서 진행

    command단에서 update후 업데이트한 result를 쿼리단을 통해 다시 조회후 ResponseDto로 화면에 반환

     

    public class MemberService {
       private final MemberRepository memberRepository;
       /**
       * 회원 수정
       */
       @Transactional
       public void update(Long id, String name) {
         Member member = memberRepository.findOne(id);
         member.setName(name);
       }
    }

    변경 감지를 사용해서 데이터를 수정

     

    오류정정: 회원 수정 API updateMemberV2 은 회원 정보를 부분 업데이트 한다. 여기서 PUT 방식을 사용했는데, PUT은 전체 업데이트를 할 때 사용하는 것이 맞다. 부분 업데이트를 하려면 PATCH를 사용하거나 POST를 사용하는 것이 REST 스타일에 맞다

     

    댓글

Designed by Tistory.