inblog logo
|
An's Blog
    RestAPI 개발기JAVA

    [RestAPI 개발기] 1. DTO 전환하기

    윤설안's avatar
    윤설안
    May 05, 2025
    [RestAPI 개발기] 1. DTO 전환하기
    Contents
    5. 모든 코드 전환 완료 후 테스트 하기
    💡
    DTO전환시 규칙
    • 모든 insert 요청 시에는 그 insert된 row를 DTO에 담아서 return
    • DTO에 민감정보 빼기, 날짜는 String으로 (날짜 공부하기 전까지)
    • update된 데이터도 DTO에 담아서 return
    • 화면에 보이는 데이터 + PK 포함(필수)
    • delete는 응답할 데이터가 없다.

    update, insert 같은 DTO 사용해도 괜찮음
    • 화면에 출력하는게 아니기 때문에 같은 DTO를 사용해도 괜찮음
    하지만 select를 하여 화면에 그림을 그릴 때 에는 화면이 똑같이 생겨도 같은 DTO 사용 금지
    • A, B와 화면이 같아서 같은 DTO를 사용하다가 B에 추가를 해야할 것이 있어서 추가하다보면 A의 화면이 꼬임
    • 화면도 꼬이고 프론트에게 B에 필요한거 하나 추가 했으니 A에서는 쓰면 안되라고 말하면 안됨
    delete는 돌려줄 row없으니 돌려줄 DTO도 없음
    💡

    DTO 생성

    • 테이블 column을 그대로 옮기고 어노테이션 삭제 후 생성자 생성
    • 생성자는 객체를 받기
    package shop.mtcoding.blog.user; import lombok.Data; public class UserResponse { @Data public static class DTO { // 규칙 2 : DTO에 민감정보 빼기, 날짜는 String으로 (날짜 공부하기 전까지) private Integer id; private String username; // private String password; // 보안에 민감한 데이터는 주면 안됨 private String email; private String createdAt; // 날짜는 Timestamp 말고 String으로 받기 public DTO(User user) { // 객체를 받아서 뿌리기 this.id = user.getId(); this.username = user.getUsername(); this.email = user.getEmail(); this.createdAt = user.getCreatedAt().toString(); // . toString하면 문자열로 바뀜 } } }
    notion image

    Service에서 DTO넘기기

    • 영속화된 객체를 DTO에 담아서 Controller로 넘겨주었다.
    // RestAPI 규칙1 : insert 요청 시에 그 행을 DTO에 담아서 리턴한다. @Transactional public UserResponse.DTO 회원가입(UserRequest.JoinDTO reqDTO) { try { User userPS = userRepository.save(reqDTO.toEntity()); return new UserResponse.DTO(userPS); } catch (Exception e) { throw new Exception400("잘못된 요청입니다"); } }

    Controller

    • DTO를 받아서 추후 return값을 DTO로 변경
    @PostMapping("/join") public String join(@Valid UserRequest.JoinDTO reqDTO, Errors errors) { // DTO로 변경 완료 UserResponse.DTO respDTO = userService.회원가입(reqDTO); return "redirect:/login-form"; }

    5. 모든 코드 전환 완료 후 테스트 하기

    • 테스트 전에 이제부터는 view를 만들지 않기때문에 필요하지 않은 mustache를 삭제
    notion image
    notion image
    notion image
    Share article
    Contents
    5. 모든 코드 전환 완료 후 테스트 하기

    An's Blog

    RSS·Powered by Inblog