HATEOAS - REST 不是真正的 REST

HATEOAS - REST is not truly REST

当 REST API 不遵循 HATEOAS 风格时,通常会提到您的 REST 不是真正的 REST。

我们怎么会想到每个可能的客户端请求都可以映射到 CRUD 操作?

例如,如果客户端(移动设备)想向用户发送一个给定电子邮件 ID 的重置密码 link,这应该如何被视为 CRUD?

很少有 REST 拥护者会争辩说 REST 应该应用于一切。我是 REST 的大力支持者,但在很多情况下,不使用 HATEOAS 是最务实的做法。你的例子就是其中之一。

但是,如果您想以 RESTful 的方式进行这项工作,完全有可能。

例如,丢失密码重置 link 可能需要一次性身份验证令牌。此令牌可能由集合中的资源表示,例如:

/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/