API 개발 기본 / 고급 준비

2023. 9. 29. 00:07LECTURES/실전! 스프링 부트와 JPA 활용

회원 등록 API

https://github.com/dpdms529/JpaShop/commit/dfc282fdb5e15dd7154eeffb12b220fcec01e36a

V1 엔티티를 RequestBody에 직접 매핑

  • 문제점
    • 엔티티에 프레젠테이션 계층을 위한 로직이 추가됨
    • 엔티티에 API 검증을 위한 로직이 들어감
    • 실무에서는 한 엔티티에 대한 API가 다양하게 만들어지는데, 각각의 API를 위한 모든 요청 요구사항을 한 엔티티에 담기 어려움
    • 엔티티가 변경되면 API 스펙이 변함

V2 엔티티 대신에 DTO를 RequestBody에 매핑

  • 엔티티와 프레젠테이션 계층을 위한 로직을 분리 가능
  • 엔티티와 API 스펙을 명확하게 분리 가능
  • 엔티티가 변해도 API 스펙이 변하지 않음

회원 수정 API

https://github.com/dpdms529/JpaShop/commit/a3cd634695b9ce5e36f991d6a7d7bf90c2f25307

회원 조회 API

https://github.com/dpdms529/JpaShop/commit/42402b94b57f3cf316a87827add45cb592bc5b6a

V1 응답 값으로 엔티티를 직접 외부에 노출

  • 문제점
    • 엔티티에 프레젠테이션 계층을 위한 로직이 추가됨
    • 기본적으로 엔티티의 모든 값이 노출됨
    • 응답 스펙을 맞추기 위해 로직이 추가됨(@JsonIgnore, 별도의 뷰 로직 등)
    • 실무에서는 같은 엔티티에 대해 API가 용도에 따라 다양하게 만들어지는데, 한 엔티티에 각각의 API를 위한 프레젠테이션 응답 로직을 담기는 어려움
    • 엔티티가 변경되면 API 스펙이 변함
    • 추가로 컬렉션을 직접 반환하면 향후 API 스펙을 변경하기 어려움

V2 응답 값으로 엔티티가 아닌 별도의 DTO 사용

  • 엔티티를 DTO로 변환해서 반환
  • 엔티티가 변해도 API 스펙이 변경되지 않음
  • Result 클래스로 컬렉션을 감싸서 향후 필요한 필드를 추가 할 수 있음

조회용 샘플 데이터 입력

https://github.com/dpdms529/JpaShop/commit/3378098a0d125709092aec9c9027bf81c7c8b096

 

 

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

스프링 부트와 JPA를 활용해서 API를 개발합니다. 그리고 JPA 극한의 성능 최적화 방법을 학습할 수 있습니다., 스프링 부트, 실무에서 잘 쓰고 싶다면? 복잡한 문제까지 해결하는 힘을 길러보세요

www.inflearn.com

'LECTURES > 실전! 스프링 부트와 JPA 활용' 카테고리의 다른 글

컬렉션 조회 최적화  (0) 2023.09.29
지연 로딩과 조회 성능 최적화  (0) 2023.09.29
웹 계층 개발  (0) 2023.09.29
주문 도메인 개발  (0) 2023.09.29
상품 도메인 개발  (0) 2023.09.29