Dire che ho un'applicazione di directory aziendale, quindi Companies
ha Employees
. Per me è abbastanza chiaro perché avresti i seguenti GET
endpoint:
api/companies # Get all company records
api/companies/{id} # Get company with specified id
api/companies/{id}/employees # Get all employees for the company with specified id
Ma dimmi che voglio ottenere un record specifico per i dipendenti. Sembra che lo schema comune sia quello di fornire una risorsa:
api/companies/{id}/employees/{id}
Ma supponendo che un record employee
sia posseduto solo da un company
, perché dovresti fornire l'id di company
in quell'URI? Non è semplicemente un parametro ridondante? Anche se è necessario acquisire il company
per qualche tipo di logica dietro le quinte, puoi farlo abbastanza facilmente controllando semplicemente il genitore di employee
. Quindi il mio istinto dice di fare l'endpoint in questo modo:
api/companies/employees/{id}
Eppure il precedente schema è così pervasivo, mi sento come se mi mancasse qualcosa. Qualcuno si preoccuperebbe di spiegare?