회원 등록 API


@RestController
@RequiredArgsConstructor
public class MemberApiController {
 private final MemberService memberService;
 
 @PostMapping("/api/v1/members")
 public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) {
	 Long id = memberService.join(member);
	 return new CreateMemberResponse(id);
 }

 @Data
 static class CreateMemberRequest {
	 private String name;
 }

 @Data
 class CreateMemberResponse {
	 private Long id;

	 public CreateMemberResponse(Long id) {
		 this.id = id;
	 }
 }

}

V1 엔티티를 Request Body에 직접 매핑

엔티티 대신에 DTO를 RequestBody에 매핑

@PostMapping("/api/v2/members")
public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) {
	
	Member member = new Member();
	member.setName(request.getName());

	Long id = memberService.join(member);
	return new CreateMemberResponse(id);

}

회원 수정 API


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

@Data
static class UpdateMemberRequest {
	private String name;
}

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