Я розробляю прагматичний API REST, і я трохи застряг у тому, як найкраще додати існуючі сукупності до колекції. Моя модель домену включає проект, який має колекцію Сайтів. Це суворий зв'язок між багатьма і багатьма, і мені не потрібно створювати сутність, яка явно моделює відносини (тобто ProjectSite).
Мій API дозволить споживачам додати існуючий сайт до проекту. Де я зависаю, це те, що мені потрібні єдині дані ProjectId та SiteId. Моя початкова ідея:
1. POST myapi/projects/{projectId}/sites/{siteId}
Але я теж подумав
2. POST myapi/projects/{projectId}/sites
із об'єктом сайту, надісланим як вміст JSON.
Варіант 1 простий і працює, але не дуже добре, і у мене є інші стосунки, які не можуть слідувати цій схемі, тому це додає непослідовність мого API.
Варіант 2 відчуває себе краще, але призводить до двох проблем:
- Чи слід створити Сайт або викинути виняток, якщо розміщено новий Сайт (SiteId = 0)?
- Оскільки мені потрібні лише ProjectId і SiteId для створення взаємозв'язку, Сайт може бути розміщений з неправильними або відсутніми даними для інших ресурсів.
Третій варіант - надання простої кінцевої точки виключно для створення та видалення відносин. Ця кінцева точка очікувала б корисну навантаження JSON, що містить лише ProjectId та SiteId.
Як ти гадаєш?