본문 바로가기

JPA

2월 21일 회원조회 API v2

엔티티로 바로 받는게아니라 DTO로 받는 예

@PostMapping("/api/v2/members")

public createMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){

//@RequestBody @Valid CreateMemberRequest request 데이터를 DTO형태로 받는다.

 

Member member = new member();

member.setName(request.getName());

//DTO에서 받은 값을 엔티티에 넣어준다.

 

Long id = memberService.join(member);

return new createMemberResponse(id);

//엔티티를 전달하여 값을 등록

 

}

 

@Data

public class CreateMemberRequest{

 private String name;

}

 

@Data

public class createMemberResponse{

 private Long id;

 public createMemberResponse(Long id){

  this.id = id;

 }

}

 

조금 번잡하지만 API스펙이 변하지도 않고 훨씬 좋다.

DTO명이 바뀌어도 영향이 적다.

*DTO에도 Valid @NotEmpty 같은걸 넣어줄 수 있다.

*엔티티를 절대 직접 노출시키지 않는다.