Хороший дизайн Restful: разная полезная нагрузка для разных аккаунтов для одного и того же URL - PullRequest
1 голос
/ 14 октября 2010

Считается ли это плохим дизайном, если один 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.

другими словами, это тот же ресурс, но то, что может быть обновлено, определяется на основе предоставленных учетных данных.

Я видел разговоры о возвращаемых данных, но не слишком много о полезных нагрузках запросов. (не уверен, что это будет считаться другим) спасибо

UPDATE

Исходя из информации Даррела Миллера, будет ли следующий дизайн лучше?

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

1 Ответ

0 голосов
/ 14 октября 2010

Проблема, которую я вижу, состоит в том, что метод PUT заменяет все содержимое целевого ресурса.например, если произошла следующая последовательность,

PUT /UserA  with  XML_B

PUT /UserA with XML_A

GET /UserA returns XML_A

UserA больше не содержит дополнительную информацию, содержащуюся в XML_B.

Думаю, что было бы лучше просто представить два разных набора информации как разныересурсы:

GET /admin/UserA

PUT /admin/UserA with XML_B

GET /UserA

PUT /UserA with XML_A
...