Pragmatik bir REST API tasarlıyorum ve bir koleksiyona mevcut varlıkları nasıl en iyi şekilde ekleyeceğime biraz şaşırdım. Etki alanı modelim, Siteler koleksiyonuna sahip bir Proje içeriyor. Bu katı bir çoktan çoğa ilişkidir ve ilişkiyi açıkça modelleyen bir varlık yaratmaya ihtiyacım yok (yani ProjectSite).
API’m, tüketicilerin bir Projeye varolan bir Site eklemelerine izin verecek. Telefonu kapattığımda, gerçekten ihtiyacım olan tek veri ProjectId ve SiteId. İlk fikrim şuydu:
1. POST myapi/projects/{projectId}/sites/{siteId}
Ama ben de düşündüm
2. POST myapi/projects/{projectId}/sites
JSON içeriği olarak gönderilen bir Site varlığı ile.
Seçenek 1 basit ve işe yarıyor ama pek doğru gelmiyor ve bu modeli izleyemeyen başka ilişkilerim var, böylece API'ma tutarsızlık katar.
Seçenek 2 daha iyi hissediyor ancak iki endişeye yol açıyor:
- Yeni bir Site gönderilirse, bir Site oluşturmalı mıyım veya bir istisna atmalı mıyım (SiteId = 0)?
- İlişkiyi oluşturmak için yalnızca ProjectId ve SiteId'ye ihtiyaç duyduğum için, Site diğer mülkler için yanlış veya eksik verilerle birlikte yayınlanabilir.
Üçüncü seçenek, yalnızca ilişkiyi oluşturmak ve silmek için basit bir uç nokta sağlamaktır. Bu son nokta, yalnızca ProjectId ve SiteId içeren bir JSON yükünü bekler.
Ne düşünüyorsun?