1

Est-ce considéré comme une mauvaise conception si une URL acceptait différentes charges utiles en fonction de l'authentification de base utilisée? par exemple:Bon Conception reposante: charge utile différente pour différents comptes pour le même URL

http://localhost/userA PUT by userA is allowed up pass XML_A but 

http://localhost/userA PUT by adminA is allowed up pass XML_B which is XML_A plus more. 

en d'autres termes, il est la même ressource, mais ce qui peut être mis à jour est déterminé basé sur des informations d'identification fournies.

J'ai vu des conversations sur les données de retour mais pas trop sur les charges utiles de demande. (Pas sûr si ce serait considéré comme différent) grâce

MISE À JOUR

basé sur des informations Darrel Miller, serait la suivante une meilleure conception?

GET /{Username}  readonly resource returns different payload based off of rights 
GET /{Username}/UpdInfo returns only updatable info (subset of GET /{Username}) 
PUT /{Username}/UpdInfo updates info 1 to 1 from the GET /{Username}/Info 

GET /admin/{Username}/UpdInfo returns updatable info (larger subset of GET /{Username}) 
PUT /admin/{Username}/UpdInfo updates info 1 to 1 from the GET /admin/{Username}/Info 
+0

+1 bonne question! –

Répondre

0

Le problème que je vois est que la méthode PUT remplace le contenu entier de la ressource ciblée. par exemple si la séquence suivante s'est produite,

PUT /UserA with XML_B 

PUT /UserA with XML_A 

GET /UserA returns XML_A 

L'utilisateur A ne contient plus les informations supplémentaires contenues dans XML_B.

Il pense que vous feriez mieux de représenter simplement les deux ensembles d'informations que différentes ressources:

GET /admin/UserA 

PUT /admin/UserA with XML_B 

GET /UserA 

PUT /UserA with XML_A 
+0

hmm .. ma seule confusion est que XML_B dérive de XML_A. donc mes pensées étaient que UserA accède à GET/UserA et voit XML_A change et fait PUT/UserA avec XML_A. AdminA arrive et fait GET/UserA et voit XML_B (qui est XML_A plus quelques champs supplémentaires) et fait PUT/UserA avec XML_B. Si l'utilisateur appelle GET/UserA, il verra XML_A (qui est XML_B mais "casted" dans XML_A qui est la vue restreinte). – BabelFish

+0

J'ai mis à jour ma question avec une autre disposition d'URL. s'il vous plaît laissez-moi savoir vos pensées – BabelFish