RESTFul模式URL,用于启用和禁用

Thi*_*llo 3 rest design-patterns

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

示例:的DELETE请求 /users/123 和的PATCH / UPDATE请求/users/123

还是应该/user/enable/123使用PUT和/user/disable/123DELETE?

Her*_*erb 5

首先:DELETE总是删除资源。因此它不能用于更改值。在此处阅读有关不同Http方法及其应如何使用的更多信息:https : //tools.ietf.org/html/rfc7231

您可以通过三种不同的方式解决此问题。最适合您的。

更新用户对象

另一种方法是通过更新User资源。在这种情况下,您可以发送 PUT /users/123带有包含完整更新的用户对象的正文的。

用户对象的部分更新

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

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

enabled是的属性User。您可以在那里直接在您的URL中解决此属性。您可以使用PUT /users/123/enabled包含true或的正文false。对于这种方法,另请参见下面的@Roman Vottner评论

  • 如果“禁用”用户在语义上意味着您的用户将被删除,您可以使用用户 DELETE。 (5认同)
  • 首先,将“ enabled”属性公开为自己的子资源是一种解决方法,可以使可用的工具集更好地解决该问题,尽管首先将其视为子资源还是有疑问的。有人可能会说RFC7231中的“重叠资源”注释准确地描述了这一点,但另一方面,在资源方面,它更像是hack TBH。对于部分更新,我将使用[JsonPatch](http://jsonpatch.com/)作为补丁请求,其中应包含服务器必须完全执行或根本不执行的指令 (2认同)