Spring/API

회원 수정 API 개발

JWonK 2022. 6. 25. 18:36
728x90
반응형

전 게시글은 회원 등록 API 개발이었고, 이번 게시글은 회원 수정 API 개발이다.

회원 등록과 달리 수정이기 때문에 이번에는 REST API에서 PUT Method를 사용한다.

 

* PUT Method와 POST Method의 차이!

수정하고자 하는 정보가 부분 정보인지 아니면 전체 정보인지에 따라 달리 사용하면 된다.

PUT은 전체 업데이트를 할 때 사용하는 것이 적절하다. 부분 업데이트가 필요한 경우에는 PATCH를 사용하거나 POST를 사용하는 것이 REST API 스타일에 적절하다.

 

전 게시글을 통해 파라미터에는 엔티티가 아닌 API 스펙에 맞는 DTO 클래스를 생성하여 넘겨주어야 한다는 것을 알 수 있었다.

그러므로 이번 글에서는 엔티티 파라미터가 아닌 DTO 파라미터만 설명한다.

 

@RestController
@RequiredArgsConstructor
public class MemberApiController {

    private final MemberService memberService;
    
    @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.getId(), findMember.getUsername());
    }
    
    @Data
    @AllArgsConstructor
    static class UpdateMemberResponse{
        private Long id;
        private String name;
    }

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

url 마지막에 넘겨오는 id로 memberServicd에서 update를 진행한다.

 

update는 변경감지를 통해 진행한다.

 

public class MemberService {

    private final MemberRepository memberRepository;

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

 

* 별로 어려운 내용이 없고 중요한 것은 변경감지를 통해 백엔드에서 업데이트 하는 부분과 DTO를 통해 API 스펙에 맞춰 개발하는 부분에 집중하면 될 것 같다.

728x90
반응형