Estoy diseñando una API REST pragmática y estoy un poco atascado en la mejor forma de agregar entidades existentes a una colección. Mi modelo de dominio incluye un proyecto que tiene una colección de sitios. Esta es una relación estricta de muchos a muchos y no tengo necesidad de crear una entidad que modele explícitamente la relación (es decir, ProjectSite).
Mi API permitirá a los consumidores agregar un sitio existente a un proyecto. Donde estoy colgado es que los únicos datos que realmente necesito son ProjectId y SiteId. Mi idea inicial fue:
1. POST myapi/projects/{projectId}/sites/{siteId}
Pero también pensé en
2. POST myapi/projects/{projectId}/sites
con una entidad del sitio enviada como contenido JSON.
La opción 1 es simple y funciona, pero no se siente del todo bien, y tengo otras relaciones que no pueden seguir este patrón, por lo que agrega inconsistencia a mi API.
La opción 2 se siente mejor pero lleva a dos preocupaciones:
- ¿Debo crear un sitio o lanzar una excepción si se publica un nuevo sitio (SiteId = 0)?
- Debido a que solo necesito ProjectId y SiteId para crear la relación, el Sitio podría publicarse con datos incorrectos o faltantes para otras propiedades.
Una tercera opción es proporcionar un punto final simple únicamente para crear y eliminar la relación. Este punto final esperaría una carga útil JSON que contenga solo ProjectId y SiteId.
¿Qué piensas?