Qual è la prassi migliore per esporre campi diversi per una risorsa in base al ruolo dell'utente / ai privilegi ACL nel sistema?
Diciamo che ho un endpoint, groups/{:group_id}
. Le mie regole aziendali indicano quanto segue:
- Gli utenti non autenticati possono vedere solo:
name
eID
campi - Gli utenti autenticati possono vedere:
name
,ID
,managers
eaccess_code
campi - I gestori di gruppo possono vedere
name
,ID
,managers
,access_code
emembers
.
Rispettivamente, i record possono apparire come:
/* Non-Authenticated User */
{
"id": "abe80d",
"name": "Foobar Group"
}
/* Authenticated User */
{
"id": "abe80d",
"name": "Foobar Group",
"access_code": "abc123",
"managers": {
"_href": "http://example.org/people/bds983a",
"_href": "http://example.org/people/cde03rf",
}
}
/* Manager */
{
"id": "abe80d",
"name": "Foobar Group",
"access_code": "abc123",
"managers": {
"_href": "http://example.org/people/bds983a",
"_href": "http://example.org/people/cde03rf",
},
"members": {
"_href": "http://example.org/people/bds983a",
"_href": "http://example.org/people/cde03rf",
"_href": "http://example.org/people/jvs239a",
"_href": "http://example.org/people/nnd9323",
}
}
Dovrebbe essere un singolo endpoint / URI che mostra diversi set di campi per diversi livelli di autenticazione, o dovrei in qualche modo suddividerli in tre diversi URI?
Sembra che URL diversi per la stessa risorsa non siano corretti, ma un client che non sa esattamente quali campi verranno recuperati è anche negativo? C'è una buona pratica in questa situazione?