Je conçois une API REST pragmatique et je suis un peu coincé sur la meilleure façon d'ajouter des entités existantes à une collection. Mon modèle de domaine comprend un projet qui possède une collection de sites. Il s'agit d'une stricte relation plusieurs-à-plusieurs et je n'ai pas besoin de créer une entité qui modélise explicitement la relation (c'est-à-dire ProjectSite).
Mon API permettra aux consommateurs d'ajouter un site existant à un projet. Là où je me bloque, c'est que les seules données dont j'ai vraiment besoin sont ProjectId et SiteId. Mon idée initiale était:
1. POST myapi/projects/{projectId}/sites/{siteId}
Mais j'ai aussi pensé à
2. POST myapi/projects/{projectId}/sites
avec une entité Site envoyée en tant que contenu JSON.
L'option 1 est simple et fonctionne mais ne semble pas tout à fait correcte, et j'ai d'autres relations qui ne peuvent pas suivre ce modèle, ce qui ajoute une incohérence à mon API.
L'option 2 se sent mieux mais conduit à deux préoccupations:
- Dois-je créer un site ou lever une exception si un nouveau site est publié (SiteId = 0)?
- Étant donné que je n'ai besoin que de ProjectId et SiteId pour créer la relation, le site peut être publié avec des données incorrectes ou manquantes pour d'autres propriétés.
Une troisième option consiste à fournir un point de terminaison simple uniquement pour créer et supprimer la relation. Ce point de terminaison attendrait une charge utile JSON contenant uniquement ProjectId et SiteId.
Qu'est-ce que tu penses?