用于启用和禁用的RESTFul模式url

用于启用和禁用的RESTFul模式url,rest,url,design-patterns,Rest,Url,Design Patterns,启用和禁用系统用户的RESTFul模式是什么 例如: 向/users/123 以及向/users/123 或者我应该使用/user/enable/123使用PUT和/user/disable/123使用DELETE?首先:DELETE始终删除资源。因此,它不能用于更改值。请阅读有关不同Http方法的更多信息,以及如何在此处使用这些方法: 你可以用三种不同的方法来解决这个问题。什么最适合你 更新用户对象 另一种方法是更新用户资源。 在这种情况下,您可以发送一个PUT/users/123,其中包含完

启用和禁用系统用户的RESTFul模式是什么

例如: 向
/users/123
以及向
/users/123


或者我应该使用
/user/enable/123
使用
PUT
/user/disable/123
使用
DELETE

首先:
DELETE
始终删除资源。因此,它不能用于更改值。请阅读有关不同Http方法的更多信息,以及如何在此处使用这些方法:

你可以用三种不同的方法来解决这个问题。什么最适合你

更新用户对象

另一种方法是更新
用户
资源。 在这种情况下,您可以发送一个
PUT/users/123
,其中包含完整更新的用户对象

部分更新用户对象

如果您定义允许您进行部分更新(部分意味着您只需要发送将合并到现有用户对象中的更改值),则可以发送包含json的
{enabled:true}
补丁/users/123。这通常在后端处理起来有点棘手

直接设置已启用属性(不推荐)

已启用
用户的属性
。您可以在URL中直接寻址此属性。 您可以将
PUT/users/123/enabled
与包含
true
false
的正文一起使用。对于这种方法,请参见下面的@Roman Vottner注释

启用和禁用系统用户的RESTFul模式是什么

你会如何处理网站上的页面

您可能会加载一个描述系统用户的页面,然后从该页面导航到一个具有用于更改用户状态的功能的表单;您可以在所需的表单上设置值,并将表单提交到提供的URL。服务器将处理该请求,并为您提供一个状态页,或将您重定向回用户的更新副本,或其他任何内容

注意:在整个过程中,客户端遵循服务器提供的链接;没有猜测URI,没有猜测使用哪个http方法;客户端遵循超媒体中嵌入的指令

以机器可读的方式重复同样的过程,就得到了一个RESTAPI


记住,REST是通过传递消息来操纵“资源”;对域模型所做的更改是资源操作的副作用。换句话说,这些资源是集成域的一部分。参见Jim Webber-

REST既不是一个协议,也没有规定如何设计API,它只是一个将客户端与服务器/API分离的系统设计架构。实际的REST客户机对URI设计不太感兴趣,因为它只会使用服务返回的URI来调用这些URI,而不解释URI的语义,将
enabled
属性公开为自己的子资源是一种变通方法,可以使可用的工具集更适合问题,尽管如果该子资源本身首先应该被视为子资源,这是一个值得怀疑的问题。有人可能会说,RFC7231中的“重叠资源”注释正好描述了这一点,但另一方面,就资源而言,它更像是一个黑客TBH。对于我用作补丁请求的部分更新,应该包含服务器必须完全执行或不执行的指令。如果“禁用”用户在语义上意味着您的用户将被删除,则可以使用“用户删除”。