1

如果一个 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
4

1 回答 1

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
于 2010-10-14T11:21:34.560 回答