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 rigida 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. Dove mi sto bloccando è 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 ho pensato anche a
2. POST myapi/projects/{projectId}/sites
con un'entità Sito inviata come contenuto JSON.
L'opzione 1 è semplice e funziona, ma non è del tutto corretta e ho altre relazioni che non possono seguire questo modello, 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 bisogno solo di ProjectId e SiteId per creare la relazione, il sito potrebbe essere pubblicato con dati errati o mancanti per altre proprietà.
Una terza opzione consiste nel fornire un semplice endpoint unicamente per la creazione e l'eliminazione della relazione. Questo endpoint si aspetta un payload JSON contenente solo ProjectId e SiteId.
Che ne pensi?