v1 안좋은 방법
@GetMapping("/api/v1/members")
public List<Member> membersV1() {
return memberService.findMembers();
}
추천하는 형태
{
"count": 4
"data": []
}
@GetMapping("api/v2/members")
public Result membersV2() {
List<Member> findMembers = memberService.findMembers();
List<MemberDTO> members = findMembers.stream()
.map(m -> new MemberDTO(m.getName()))
.collect(Collectors.toList());
return new Result<>(members);
}
@Data
@AllArgsConstructor
private static class Result<T> {
private T data;
}
@Data
@AllArgsConstructor
private static class MemberDTO {
private String name;
}
{
"data": [
{
"name": "cmlee3"
},
{
"name": "cmlee"
},
{
"name": "user"
}
]
}
만약 count가 필요하면
@GetMapping("api/v2/members")
public Result membersV2() {
List<Member> findMembers = memberService.findMembers();
List<MemberDTO> members = findMembers.stream()
.map(m -> new MemberDTO(m.getName()))
.collect(Collectors.toList());
return new Result<>(/* count 쿼리 값 */, members);
}
@Data
@AllArgsConstructor
private static class Result<T> {
private int count;
private T data;
}