在 REST 中,您谈论的是资源。资源将通过其属性表达一些状态。
通过您的示例,我会问自己:“为什么要验证电子邮件”、“为什么要验证密码”。因为要验证用户是否可以注册。
因此,您的资源将不是电子邮件或密码,而是用户。
验证是一种操作。 REST architecture 不适合的东西。
您要验证什么?您想注册一个新用户,但还要验证他是否被允许注册。因此,您将尝试在某些条件下将用户添加到您的用户集合中。在带有 HTTP 的 REST 中,这可以通过 POST 来完成,其作用类似于 add(User)。然后请求背后的逻辑可以对用户执行验证规则。
要发布数据,只需使用内容正文并使用标题获取更多信息。所以我会将我的 API 更改为:
HTTP method: POST
Path: /users
Content-Type: application/json
Body:
{"email_address":"qsdfg@sdfgh.com", "password":"qlmkdjfmqlsk"}
这将您的 API 简化为添加用户的单个入口点。允许或拒绝注册用户可以通过使用 HTTP 状态代码和消息来传达。
当然,以明文形式发送密码不是一个好习惯,但您可以使用 SSL 或 TLS 设置安全连接进行通信。
顺便说一句,在 URL 中发送敏感数据并不是一个好习惯。服务器可以记录 url,该 url 将向有权访问该日志的每个人显示用户的密码。
登录方式有点不同,但差别不大。
您需要一个资源,将用户唯一地链接到他与您的系统的对话。
HTTP method: POST
Path: /authentication
Content-Type: application/json
Body:
{"email_address":"qsdfg@sdfgh.com", "password":"qlmkdjfmqlsk"}
回应
Status-Code: 200
Content:
unique-id-to-my-user
身份验证可以调用您的用户 api 来执行规则,然后生成 id。
您可以使用 OAuth2 实现来处理此问题。