La maggior parte di noi conosce SOLID e nel corso degli anni ha capito quanto può essere utile quando dobbiamo cambiare.
Basato su S & I parti di SOLID e dall'esperienza che ho usato per progettare i miei servizi RESTful HTTP a grana fine come avrei potuto. Ad esempio, in un semplice sistema di gestione dei contatti, vorrei creare ed esporre questi endpoint:
- createContact firstName = x &? LastName = y
- addPhoneToContact contactid = x &? Telefono = y
- addEmailToContact contactid = x &? E-mail = y
- associateContactWithGroup contactid = x &? GroupId = y
- removePhoneFromContact contactid = x &? PhoneId = y
- updateContactName contactid = x &? FirstName = y & lastName = z
Tuttavia, di recente abbiamo discusso sulla granularità dei nostri servizi RESETful e un collega ha proposto di vedere Contatto di Google come esempio e modello.
Con mia sorpresa, ho visto che aggiornano i contatti in modo molto complesso e a grana grossa, in una semplice API.
Dobbiamo ammettere che Google è il gigante di Internet e che non fanno cose senza sapere cosa fanno.
Se si trattasse di un sito web arbitrario, non li prenderei nemmeno in considerazione, e probabilmente sosterrei che i loro sviluppatori non hanno familiarità con il concetto di abbattere le cose (divide e conquista / analisi / WBS / SOLID / ...) . Ma Google, è completamente diverso.
Ora sono bloccato sul motivo per cui lo hanno fatto, e quale approccio è più gestibile e migliore per creare API. Una grande singola API che aggiorna / crea un modello complesso o molte piccole API che aggiornano / creano piccole parti di quel modello.
Questa è una sfida per i carrelli della spesa, per i contatti, per la gestione del corso di formazione, per articoli contabili e quasi molti altri casi.
So che questo potrebbe essere soggettivo, ma sto cercando di trovare ragioni oggettive dietro ogni approccio, in modo che possiamo decidere con più conoscenza.