Si consideri la seguente relazione tra due risorseEsporre endpoint riposante per un uno a molti rapporti
- Collegio ha molti Facoltà
- Facoltà appartenere ad un collegio
Ovviamente una Facoltà non è una risorsa di prima classe qui.
Ora ho bisogno di endpoint per le seguenti operazioni.
- Creare una nuova facoltà in questo college questa fattoria. Un modo possibile per farlo in due operazioni.
POST /faculties/
PUT /college/1/faculties
- Rimuovere una facoltà da questo collegio. Ancora due operazioni
GET /college/1/faculties
: Elenco delle facoltà associate. Ognuna conterrà un auto url come/faculties/1
.DELETE /college/1/faculties/1
: l'url sembra migliore ma come esporre questo URL?
- Aggiungi una o più facoltà sotto quel collegio.
PUT /college/1/faculties
che accetta un elenco completo delle facoltà di questo college.
- Elimina completamente quel particolare settore.
DELETE /sectors/1
: Sembra buono ma deve occuparsi della cache di/faculties/1/sectors
.
quello che sarebbe un approccio migliore in questo caso? Ho letto di esporre le risorse dei soci, ma con questo approccio, se un college ha 10 facoltà, ci vorranno 10 chiamate http separate per ottenere tutti quelli dalle iscrizioni.
Inoltre, questa è solo una piccola parte dell'intero albero delle relazioni. Per estendere ulteriormente questo, dire che il sistema ha
- Facoltà ha molti Dipartimenti
- reparto ha molti laboratori così via.
E inoltre, nell'architettura RESTful, il client non deve mai popolare gli URL.
Qualche suggerimento?
Per inciso, penso che si dovrebbe essere coerente con l'uso di plurali - si sta utilizzando singolare per il college, il plurale per facoltà e settori. Personalmente uso sempre singolare, perché mi piace il percorso per abbinare il nome della risorsa. Non importa troppo quello che scegli, ma sii coerente. – justAnotherUser