API 서버를 개발할 때 Request를 받아올 DTO를 생성해서 사용하자✨
public class Member {
private Long id;
private String name;
private Address address;
}
@PostMapping("/v1/posts")
public Response saveMember1(@RequestBody @Valid Member member)
{
Long id = memberService.join(member);
return new Response(id);
}
@NotEmpty
와 같은 검증 로직 필요일반 로그인, 구글 로그인, 카카오 로그인 등 동일한
회원
객체에 대한 다양한 로직 필요
요청 1 : HTTP Body -> 엔티티
(로직1 실행)
요청 2 : HTTP Body -> 엔티티
(로직2 실행)
엔티티가 변하면 API 스펙이 변한다!!
=> 엔티티가 로직을 갖고 있는 것이 아니라,
Request 별로 필요한 DTO를 생성하고 Request를 담아서 로직 실행
@PostMapping("/v2/posts")
public Response saveMemberV2(@RequestBody CreateMemberRequest request) {
Member member = new Member();
member.setName(request.getName());
Long id = memberService.join(member);
return new Response(id);
}
// DTO 객체
static class createMemberRequest {
@NotEmpty
private String name;
}
요청 1 : HTTP Body -> DTO 객체1 -> 엔티티
(로직 실행)
요청 2 : HTTP Body -> DTO 객체2 -> 엔티티
(로직 실행)
DTO (Data Transfer Object)
계층 간 데이터 전송을 위한 객체