작성
·
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]} 처럼 객체 형식({})으로 바꾸어야 하는데, 이렇게 되면 스펙이 완전히 망가집니다.
감사합니다