REST验证电子邮件的方式是什么?

时间:2016-09-25 18:12:11

标签: rest email-validation

当用户注册我的网络应用程序时,我会发送一封电子邮件来验证他的收件箱。 在电子邮件中有一个指向这样的资源的链接:

GET /verify/{token}

由于资源在幕后更新,它是否会破坏RESTful方法?

如何以RESTful方式完成?

3 个答案:

答案 0 :(得分:7)

你所说的不是REST。 REST用于机器到机器的通信,而不用于人机交流。您可以开发第一方REST客户端,它将激活发送到REST服务。

您可以在浏览器中使用验证URI来访问REST客户端:

# user follows a hyperlink in the browser manually

GET example.com/client/v1/verify/{token}
# asking the client to verify the token

之后,REST客户端将从REST服务获取用于验证的超链接,并在后台将POST发送到服务。

# the REST client follows the hyperlinks given by the service automatically
# the REST client can run either on the HTTP client or server side

GET example.com/api/v1
# getting the starting page of the REST service
# getting the hyperlink for verification

POST example.com/api/v1/verification {token}
# following the verification hyperlink

如果您有服务器端第一方REST客户端,那么对REST服务的HTTP请求将完全在服务器上运行,您将无法在浏览器中看到任何相关信息。如果您有客户端REST客户端,那么您可以使用AJAX CORS在浏览器中发送POST,或者您可以尝试使用HTML表单直接POST(不推荐)。无论如何,激活应该是POST或PUT。

答案 1 :(得分:0)

你不是在思考REST吗?通过电子邮件验证,您希望用户只需单击他正在使用的任何邮件用户代理的链接,这样您最终将在服务器上进行简单的GET(显示为用户的超链接),令牌在路径中或作为查询字符串的一部分:

GET http://example.com/verify-email/TOKEN
GET http://example.com/verify-email?token=TOKEN

这个用例都可以。它不是真正的你正在获得或创造的资源;只是后端某个进程的触发器。

为什么你认为这会与好的设计相冲突?

答案 2 :(得分:0)

这取决于你想做什么。

例如,在验证用户后是否会触发电子邮件?如果是这样,它不是幂等方法,你应该使用POST。

示例:

POST /users/{id}/verify/{token}

如果该方法除了更新之外没有任何后果,我认为你应该使用PUT。