강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

박선정님의 프로필 이미지
박선정

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 등록 API

DTO 대신 Form 사용은 안되나요?

작성

·

79

0

[질문 템플릿]

1. 강의 내용과 관련된 질문인가요? (예)

2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)

3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

 

[질문 내용]

회원 등록 api 에서 아래 코드 처럼 saveMemberV1 메서드의 반환값은 new CreateMemberResponse(id)입니다.

 

@PostMapping("/api/v1/members") 
public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){     
    Long id = memberService.join(member);     
    return new CreateMemberResponse(id); 
}  

근데 MemberForm.java 에 id를 추가하고 이걸로 리턴받으면 안되나요?

왜 굳이 DTO 를 만들어서 리턴하나요?

 

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 박선정님.

DTO(Data Transfer Object)와 Form은 보통 그 역할과 목적이 다릅니다. API를 설계할 때, DTO는 주로 클라이언트와의 데이터 교환에 사용되는 객체로 사용되며 서버와 클라이언트 사이에서 데이터를 전달하기 위한 용도로 만들어집니다. 반면에 Form 객체는 주로 사용자의 입력 데이터를 받아 처리하는 데 사용됩니다.

따라서, Form 객체에 id를 추가하여 반환 객체로 사용하는 것이 불가능한 것은 아니지만, 두 객체의 역할을 명확하게 분리하여 설계하는 것이 유지보수와 코드 명확성 측면에서 좋습니다. 이렇게 하면 각각의 객체가 본래의 역할에만 집중할 수 있도록 하고, 기능과 책임을 분리할 수 있습니다.

아래에 관련된 유사 질문 링크들을 제공해드립니다:
1. DTO와 Form 객체의 차이점은 무엇인가요?
2. Form 객체를 사용하지 않고 DTO로 처리하는 이유는?

이처럼 DTO를 사용하는 것이 유지보수성과 코드의 명확성을 높이는 방법 중 하나이기에 권장되는 설계 방식입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박선정님의 프로필 이미지
박선정

작성한 질문수

질문하기