지금까지 회원 등록 API를 만들었다. 이제 수정 API를 REST스타일로 만들어보자.
수정은 PUT으로 가져가자.
PUT은 멱등성을 갖고 있다. 같은 함수를 몇번이든 적용하든 결과가 같은 속성임.
@PutMapping("/api/v2/members")
public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest){
}
이번에도 여전히 요청과 응답을 모두 DTO로 처리한다.
그리고 등록과 수정은 대부분은 DTO가 다른 구조를 갖고 있다.
DTO도 이너클래스로 만들어주자.
@Data
static class UpdateMemberRequest {
private String name;
}
@Data
@AllArgsConstructor
static class UpdateMemberResponse {
private Long id;
private String name;
}
💡 참고로 김영한님은 엔티티에는 롬복을 최소화하신다고 하심. 써도 getter정도만 쓴다고 한다. 다만 DTO에는 좀 자유롭게 쓰는 스타일이라고 하심.
수정시에는 전에 배웠던 것 처럼 병합보다는 변경감지를 이용한다.
@PutMapping("/api/v2/members{id}")
public UpdateMemberResponse updateMemberV2(
@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request){
memberService.update(id, request.getName());
return new UpdateMemberResponse(); //생성자에 값을 채워줘야 한다.
}