회원 조회 API

@RestController
@RequiredArgsConstructor
public class MemberApiController {

    private final MemberService memberService;

    @GetMapping("/api/v1/members")
    public List<Member> membersV1() {
        return memberService.findMembers();
    }
}
  • Entity를 그대로 반환하면 Entity 내용이 외부에 다 노출된다.

  • 화면에 뿌리기 위한 프레젠테이션 로직이 Entity에 추가되면 안된다.

  • 특정 필드에 @JsonIgnore를 넣을 수도 있지만 다양한 api가 Entity를 사용하기 때문에 사용하면 안된다.

  • Entity가 변경되면 API 스펙이 바뀌어버린다.

Entity 외부 노출

  • Entity 대신에 API 스펙에 맞는 별도의 DTO를 노출해야 한다.

    • 어떤 API는 name 필드가 필요하지만, 어떤 API는 name 필드가 필요 없을 수 있다.

  • 내가 노출할 데이터만 별도의 DTO로 만든다.

  • Result로 한 번 감싸줘서 향후 필요한 필드를 추가할 수 있게 한다.

    • 감싸주지 않으면 바로 json 배열 타입으로 나가면서 수정에 대한 유연성이 떨어진다.

  • 수정 사항이 생기면 이렇게 추가할 수 있다.

Last updated

Was this helpful?