실용적인 REST API를 디자인하고 있으며 기존 엔터티를 컬렉션에 추가하는 가장 좋은 방법을 고집했습니다. 내 도메인 모델에는 사이트 모음이있는 프로젝트가 포함되어 있습니다. 이것은 엄밀한 다 대다 관계이며 관계를 명시 적으로 모델링하는 엔티티 (예 : ProjectSite)를 만들 필요가 없습니다.
내 API를 통해 소비자는 기존 사이트를 프로젝트에 추가 할 수 있습니다. 내가 끊어지고있는 곳은 내가 정말로 필요한 유일한 데이터는 ProjectId와 SiteId라는 것입니다. 나의 초기 아이디어는 :
1. POST myapi/projects/{projectId}/sites/{siteId}
그러나 나는 또한 생각했다
2. POST myapi/projects/{projectId}/sites
JSON 엔터티로 전송 된 Site 엔터티
옵션 1은 간단하고 작동하지만 옳지 않은 느낌 이며이 패턴을 따르지 않는 다른 관계가있어 API에 불일치를 추가합니다.
옵션 2는 더 나아지지만 두 가지 우려가 있습니다.
- 새 사이트가 게시되면 (사이트 ID = 0) 사이트를 만들거나 예외를 발생시켜야합니까?
- 관계를 만들려면 ProjectId 및 SiteId 만 있으면되므로 사이트에 다른 속성에 대한 데이터가 잘못되었거나 누락 될 수 있습니다.
세 번째 옵션은 관계를 작성하고 삭제하기위한 단순한 엔드 포인트를 제공하는 것입니다. 이 엔드 포인트는 ProjectId 및 SiteId 만 포함하는 JSON 페이로드를 예상합니다.
어떻게 생각해?