Sto progettando un'API REST pragmatica e sono un po 'bloccato sul modo migliore per aggiungere entità esistenti a una raccolta. Il mio modello di dominio include un progetto che ha una raccolta di siti. Questa è una stretta relazione molti-a-molti e non ho bisogno di creare un'entità che modella esplicitamente la relazione (cioè ProjectSite).
La mia API consentirà ai consumatori di aggiungere un sito esistente a un progetto. Il punto in cui vengo bloccato è che gli unici dati di cui ho veramente bisogno sono ProjectId e SiteId. La mia idea iniziale era:
1. POST myapi/projects/{projectId}/sites/{siteId}
Ma ci ho pensato anche io
2. POST myapi/projects/{projectId}/sites
con un'entità sito inviata come contenuto JSON.
L'opzione 1 è semplice e funziona ma non sembra del tutto corretta, e ho altre relazioni che non possono seguire questo schema, quindi aggiunge incoerenza alla mia API.
L'opzione 2 si sente meglio, ma porta a due preoccupazioni:
- Devo creare un sito o generare un'eccezione se viene pubblicato un nuovo sito (SiteId = 0)?
- Poiché ho solo bisogno di ProjectId e SiteId per creare la relazione, il sito potrebbe essere pubblicato con dati errati o mancanti per altre proprietà.
Una terza opzione è fornire un endpoint semplice esclusivamente per la creazione e l'eliminazione della relazione. Questo endpoint prevede un payload JSON contenente solo ProjectId e SiteId.
Cosa pensi?