Sto costruendo un'API JSON REST per la mia applicazione e ho qualche dubbio sul design stesso. La mia applicazione ha organizzazioni e anche attrezzature che appartengono alle organizzazioni. Questo sarebbe un esempio dell'API delle organizzazioni:
/organizations:
Loads all the organizations from the application
/organizations/{id}:
Loads a specific organization by id
Questo sembra abbastanza chiaro. Comunque ora voglio accedere all'apparecchiatura, che è accessibile tramite id o codice. L'ID è univoco per l'applicazione, mentre il codice è univoco per organizzazione. Alcune scelte:
/organizations/{id}/equipment:
Loads the equipment by organization. This seems quite clear to me
/organizations/{idOrg}/equipment/{idEquip}:
Equipment by id. Isn't the organization id quite redundant here?
/organizations/{idOrg}/equipment/code/{code}:
Seems it makes sense, but probably would be better to pass code as a parameter.
/organizations/{idOrg}/equipment?id={idEquip}:
Best choice?
/organizations/{idOrg}/equipment?code={code}:
Best choice?
A mio parere, i metodi qui sotto sembrano migliori solo per l'acquisizione di apparecchiature (anche se restituiscono una lista, mentre il metodo dovrebbe restituire un singolo valore o nulla). Tuttavia, ho ancora più relazioni con le apparecchiature, che questi metodi non sembrano adeguati. Ad esempio come estendere l'API per integrare i metodi per caricare i file per ogni apparecchiatura?
Aggiorna
Si dovrebbe considerare che le organizzazioni sono strutturate gerarchicamente, quindi abbiamo alberi organizzativi e se org1 contiene org2 e una apparecchiatura appartiene a org2, essa appartiene anche a org1.