良好的休息设计:针对相同网址的不同帐户的不同有效负载

时间:2010-10-14 04:53:14

标签: rest restful-authentication basic-authentication payload

根据所使用的基本身份验证,如果一个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.

在其他方面,它是相同的资源,但可以更新的内容是根据提供的凭据确定的。

我见过有关返回数据的对话,但关于请求有效负载没有太多。 (不确定它是否会被视为不同)谢谢

更新

根据Darrel Miller的信息,以下是更好的设计吗?

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 :(得分:0)

我看到的问题是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