기존 Java API의 기능을 대부분 공개하기 위해 REST API를 작성 중입니다. 두 API 모두 조직 내에서 사용하기위한 것입니다. 외부 용으로 디자인 할 필요는 없습니다. 두 API 모두에 영향을 주지만 REST API를 구현하고 있습니다. Java API는 로컬 응용 프로그램에 계속 사용되지만 ( "종료되지는 않음") REST API는 중요한 새로운 개발에 사용됩니다.
Java API 클래스 중 일부는 단순히 데이터 (속성, 게터, 세터가있는 Bean)입니다. 그리고 이들 중 적어도 일부는 REST API를 통해 데이터 (XML 또는 JSON에 마샬링 됨)로 (일부 형태로) 전송하는 것이 합리적입니다. 예를 들어 서버 시스템에 대한 정보를 저장하는 클래스입니다. 이러한 데이터 클래스에 대해 다음과 같은 선택에 직면 해 있습니다.
- REST API에서 원래 Java 클래스 (또는 서브 클래스)를 직접 노출 시키거나
- REST API를 위해 특별히 새로운 데이터 전송 클래스 (DTO 패턴)를 만드시겠습니까?
어느 쪽이든 REST 데이터 전송 클래스를 갖게됩니다. 문제는 원본에 주석을 달거나 새 원본을 만들지 여부입니다 (원본의 사본 근처에있을 수 있음). 다른 선택이있을 수 있지만 주로이 두 가지에 중점을 둘 것입니다.
# 1의 인수 :
- 건조 (반복하지 마십시오)
- 빠른 구현
- REST API를 쉽게 업그레이드
# 2의 인수 :
- REST API를 Java API와 별도로 버전 화해야하는 경우 어떻게합니까? (이는 다소 가능성이 있습니다.)
- 등록 정보 제거, 동작 추가 또는 클래스 계층 구조 변경과 같은 Java 데이터 클래스가 크게 변경되면 어떻게됩니까? (이 또한 다소 가능성이 있습니다.)
결론은 DRY (# 1)와 디커플링 (# 2) 사이의 트레이드 오프처럼 보입니다.
나는 # 1부터 시작하여 나중에 # 2로 넘어가는 데 문제가 생기면 필요하지 않은 것을 구축 할 수없는 민첩한 지침을 따라야합니다. 이것은 나쁜 생각입니까? 어쨌든 내가 끝날 것이라고 생각되면 # 2로 시작해야합니까?
내 목록에서 주요 논쟁 / 결과가 누락 되었습니까?