se si dispone di un REST API
che è hypermedia-driven
(hateoas) si può facilmente cambiare il comportamento di un cliente, includendo o omettendo i collegamenti nella risposta (_links
). Ciò consente al cliente di dimenticare completamente le autorizzazioni di test per le operazioni possibili nello stato corrente di resource
(il collegamento all'operazione è presente o meno).Come rappresentare una proprietà di sola lettura in un'API REST
Inoltre si può lasciare fuori le proprietà nella risposta se l'utente corrente non dispone dell'autorizzazione per vederlo.
Tale autorizzazione modo è fatta interamente sul server (e controlla le azioni e le proprietà che sono ammissibili per l'esecuzione/vista).
Ma cosa succede se voglio un read-only
proprietà? Non è un problema per REST
API
ignorare la proprietà se è presente nella richiesta (_POST_
O _PUT_
). semplicemente non verrà salvato. Ma come può un client di distinguere tra scrittura e sola lettura proprietà di presentare gli opportuni controlli utente (come un campo di immissione disabile in HTML
)?
L'obiettivo è di non avere mai le autorizzazioni di client request
di un utente, ma di disporre di una risorsa completamente client/frontend
basata su risorse.
Qualsiasi aiuto è molto apprezzato :-)
Poiché la risposta è probabilmente basata su un formato di documento (XML e JSON sono piuttosto generici, quelli più specializzati sono preferibili e l'estensione di uno non è così difficile), utilizzare alcuni schemi che descrivono il formato del documento per definire ciò che è obbligatorio, cosa è facoltativo e cosa è di sola lettura –
ok Ho capito cosa intendi, ma intendo una proprietà che può essere scrivibile, sola o non presente a seconda delle autorizzazioni dell'utente. Quindi lo schema sarebbe dinamico –
Vorrei lasciare i controlli sul lato server e restituire un formato di documento specializzato per determinati ruoli. Qui lo schema del formato del documento contiene le informazioni necessarie se una proprietà è di sola lettura, facoltativa o obbligatoria per eventuali risposte del cliente. Nota, il formato del documento per i diversi ruoli non deve essere identico. Può essere un sottoinsieme, un superset o qualcosa di totalmente diverso rispetto ad un ruolo di base. –