Ho un paio di risorse annidate come Merchant
, Hotel
, Room
. Un commerciante può avere molti hotel e allo stesso modo un hotel può avere molte stanze.
In questo momento per gestire queste risorse faccio qualcosa del tipo:
Crea
POST api/v1/merchants/11/hotels
crea un nuovo hotel.
Aggiorna
PUT api/v1/merchants/11/hotels/42
aggiorna l'hotel specificato.
Lo stesso per leggere ed eliminare.
Per le stanze:
Crea
POST api/v1/merchants/11/hotels/42/rooms
crea una nuova stanza.
Aggiorna
PUT api/v1/merchants/11/hotels/42/rooms/42
aggiorna la stanza indicata ecc.
In futuro ci saranno più risorse annidate come le strutture della stanza ecc. e seguendo questo schema diventerà peloso.
Sono nella fase iniziale dello sviluppo e potrei esporre queste API per gli sviluppatori, quindi non posso modificare molto rapidamente lo schema API.
Sono in dubbio dal primo giorno per quanto riguarda questo approccio. Posso supporre che ogni entità abbia un ID univoco (che è vero per ora visto che sto usando un database relazionale e ho una sua tabella)? Se sì, allora posso usare questi URL per le API invece di quelle precedenti?
POST api/v1/rooms
PUT api/v1/rooms/42
Etc per più risorse annidate.
C'è qualche violazione della semantica o dello standard che potrebbe mancare? Sto usando un approccio simile nelle opinioni, ad es. in URL nei browser che sembra troppo brutto.