【发布时间】:2018-01-06 21:12:47
【问题描述】:
当 REST API 不遵循 HATEOAS 风格时,通常会认为您的 REST 不是真正的 REST。
我们怎么能想到来自客户端的每一个可能的请求都可以映射到 CRUD 操作?
例如,如果客户端(移动端)想向用户发送一个给定电子邮件 ID 的重置密码链接,如何将其视为 CRUD?
【问题讨论】:
-
我猜重置密码和更新密码差不多吧?
当 REST API 不遵循 HATEOAS 风格时,通常会认为您的 REST 不是真正的 REST。
我们怎么能想到来自客户端的每一个可能的请求都可以映射到 CRUD 操作?
例如,如果客户端(移动端)想向用户发送一个给定电子邮件 ID 的重置密码链接,如何将其视为 CRUD?
【问题讨论】:
很少有 REST 倡导者会争辩说 REST 应该应用于所有事物。我是 REST 的大力支持者,但在很多情况下,不使用 HATEOAS 是最务实的举措。你的例子就是其中之一。
但是,如果您想以 RESTful 方式进行这项工作,那完全有可能。
例如,丢失的密码重置链接可能需要一次性身份验证令牌。此令牌可能由集合中的资源表示,例如:
/users/xyz/auth-tokens
也许您可以通过使用POST 在该集合中创建一个新的“auth-token”资源来启动丢失密码的电子邮件操作。
你应该吗?我不知道!你能?当然!
【讨论】:
创建 PasswordReset 资源非常简单。
POST /password-resets
有 RPC 意识的人很难切换到 REST,因为他们习惯于使用 RPC 来做事。 :)
https://www.smashingmagazine.com/2016/09/understanding-rest-and-rpc-for-http-apis/
【讨论】: