작성
·
61
0
API 개발 기본 - 회원 조회 API의 강의에서, membersV1은 엔티티를 직접 반환하기 때문에 좋지 않고, 컬렉션을 직접 반환하기 때문에 향후 API 스펙을 변경하기 어렵다고 하셨습니다. 따라서 membersV2에서는 엔티티를 직접 반환하지 않고 API 스펙에 따라 DTO를 맞춰 설계하고, 별도의 필드가 생길 것을 대비해 Result 클래스로 한번 감싸서 넘긴 것을 알 수 있었습니다.
이후 API 개발 고급부터는, Result 클래스로 감싸지 않고 List<DTO>로만 API의 응답값을 설정하시던데, 일부러 Result 클래스로 감싸는 부분을 생략하신 것인지 궁금합니다. 이와 별개로 실무에서는 Result와 같은 클래스로 감싸고 응답하는 것이 일반적일까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. ash님, 좋은 질문 감사합니다.
API 설계에 있어 DTO(Data Transfer Object)를 활용하는 이유는 주로 안전한 데이터 교환과 API의 유연한 변경을 위함입니다.
API 개발 시 컬렉션을 직접 반환하면 다음과 같은 문제가 발생할 수 있습니다:
- 변경의 어려움: 컬렉션 자체가 API 응답의 스펙이 되어버리면, 향후 응답 형식을 변경하기 어렵습니다.
- 스펙 확장 제약: 응답에 실제 필요한 정보 외에 추가적인 메타데이터를 포함하고 싶을 때 어려움이 있습니다.
Result 클래스를 활용하는 이유는 리스트를 감싸도록 함으로써, 추가적인 데이터를 제공할 수 있는 유연한 스펙을 가지게 도와줍니다. 예를 들어, 데이터를 포함한 메타 정보를 제공할 수 있습니다. 그 예로 각 항목의 개수를 나타내는 count
필드를 추가하는 것이 있습니다.
실무 애플리케이션에서는 다양한 방식으로 처리할 수 있습니다:
1. Result 클래스로 감싸서 반환: 응답에 추가적인 정보를 포함할 때 유리합니다.
2. DTO 리스트만 반환: 기본적인 응답 형식이므로 적용이 쉽고 직관적입니다.
기능별로 어떻게 처리할지는 프로젝트나 팀, 그리고 응답의 복잡성에 따라 결정됩니다. 요구사항에 따라 유연하게 적용하는 것이 중요합니다.
관련된 유사한 질문과 답변으로, 김영한 님의 답변을 참고하시기 바랍니다:
1. “조회 API 질문 드립니다!” - JSON 리스트 형식 감싸기의 필요성
2. “Result클래스 사용이유” - 결과를 감싸는 이유와 일반적 사용 사례
이해를 돕기 위해 지식공유자님의 기존 답변을 바탕으로 관련 링크를 제공해 드렸습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.