[Spring API 실습 #-03] 회원 조회 API

API 설계 시 주의점

  • API 파라미터 받을때나 보낼때는 절대로 엔티티를 사용하면 안된다.
  • 항상 DTO를 만들어서 필요한 정보만 내보내도록 해야한다! 필수!
import java.util.List;
import java.util.stream.Collectors;

@RestController
@RequiredArgsConstructor
public class MemberApiController {

    private final MemberService memberService;

    /**
     * 멤버 조회
     * 문제점 : 엔티티 모든것이 노출 등
     * @return
     */
    @GetMapping("/api/v1/members")
    public List<Member> membersV1() {
        return memberService.findMembers();
    }

    @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());

        // API 파라미터 받을때나 보낼때 엔티티를 사용하지 말아라.
        // DTO를 만들어서 필요한 정보만 노출해야 한다.
        // Result로 감싸서 보내기 때문에 유연성이 생긴다.
        return new Result(collect.size(),   collect);
    }

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

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

}

댓글

Designed by JB FACTORY