【发布时间】:2013-11-07 18:11:33
【问题描述】:
我们正在构建 Web 服务并尝试遵循 REST 准则。该服务允许用户创建和修改他们的帐户以及随之而来的个人资料(想想电子邮件首选项、地址等)。
在大多数情况下,我认为我们已经把事情搞得很清楚了,但是有一个用例我不确定是否合适。
假设我们有一个调用 /password ,用户可以在其中 PUT 一个包含他们当前和所需密码的请求。这很好,但我们正在尝试找出一个适当的调用来启动忘记密码工作流,这会在服务器上启动一些操作,并且用户会收到有关如何继续的电子邮件的说明。
由于资源应该是名词而不是动词,因此在 URL 的某处添加 /forgotpassword 没有意义。我们一直在考虑的一种方法是使用与更改密码相同的 PUT,但使用不同的 Content-Type / Accept 标头来区分所需的结果。我对此没意见,但我想知道其他一些选项可能是什么。
【问题讨论】:
-
你的问题的标题几乎是矛盾的。使用 RPC 构建 REST 服务就像用正方形构建一个圆圈。并非不可能,但确实适得其反。
-
@PedroWerneck 我不是要使用 RPC 构建一个 REST 服务,我要问的是如何在仍然遵循 RESET 的同时完成在这种情况下确实是必须启动的操作或工作流的事情原则。
-
当然,我意识到了这一点,这就是为什么我是下面答案的作者,但你应该考虑编辑标题,因为它不能清楚地反映你的要求。跨度>
-
@PedroWerneck 变了,你觉得现在更好了吗?
-
好多了。 :) 毫无疑问。
标签: rest