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

terecal님의 프로필 이미지
terecal

작성한 질문수

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

회원 조회 API

회원 조회 로직의 응답 형식에 대해 질문이 있습니다.

작성

·

190

0

아래처럼 회원 조회 로직이 있을때  멤버 엔티티 정보를 스트림화 한뒤 멤버 디티오 형식으로 다시 설정하고 그걸 리스트화하는것까지는 의미상으로 이해가 가는데여 응답 클래스 Result<T>  객체를 만들어서 응답하는 이유가 무엇인가여?

@GetMapping("/api/v2/members")
public Result memberV2() {
List<Member> findMembers = memberService.findMembers();
List<MemberDto> collect = findMembers.stream()
.map(m-> new MemberDto(m.getName()))
.collect(Collectors.toList());

return new Result(collect);
}

@Data
@AllArgsConstructor
static class Result<T> {
private T data;
}

@Data
@AllArgsConstructor
static class MemberDto {
private String name;
}

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. terecal님

사실 그냥 넘기셔도 됩니다.

그런데 특히 컬력센의 경우 그냥 넘기게 되면 JSON이 [] 이렇게 배열 형식으로 반환됩니다.

이렇게 [a,b,c] 배열 형식으로 넘어가면 향후 필드를 추가할 수 없는 단점이 발생합니다. 예를 들어서 전체 데이터 수(count)필드를 추가하고 싶다면 [a,c,b,] 배열 형식을 {count:10, [a,b,c]} 처럼 객체 형식({})으로 바꾸어야 하는데, 이렇게 되면 스펙이 완전히 망가집니다.

감사합니다

terecal님의 프로필 이미지
terecal

작성한 질문수

질문하기