필요한 데이터만 응답으로
Entity 전체를 클라이언트의 응답으로 넘길경우 불필요한 데이터가 포함될 수 있으며 민감한 데이터가 노출되는 것을 막을 수 있다.
유효성 검증 코드를 Entity클래스에서 분리
Entity클래스에는 모델링을 위한 다양한 어노테이션이 사용되므로 유효성 검증 코드가 같이 들어가게 된다면 복잡해진다. 이를 DTO클래스에 작성함으로써 Entity클래스를 간결하게 작성할 수 있다.
DTO 클래스 적용 전
@RestController
@RequestMapping("/v1/members")
public class MemberController {
@PostMapping
public ResponseEntity postMember(@RequestParam("email") String email,
@RequestParam("name") String name,
@RequestParam("phone") String phone) {
Map<String, String> map = new HashMap<>();
map.put("email", email);
map.put("name", name);
map.put("phone", phone);
return new ResponseEntity<Map>(map, HttpStatus.CREATED);
}
적용 후
@RestController
@RequestMapping("/v1/members")
public class MemberController {
@PostMapping
public ResponseEntity postMember(MemberPostDto memberPostDto) {
return new ResponseEntity<MemberDto>(memberDto, HttpStatus.CREATED);
}
DTO클래스 예시
@Getter
public class MemberPostDto {
@NotBlank
@Email
private String email;
@NotBlank
private String name;
@NotBlank
private String phone;
}