【发布时间】:2016-06-11 23:17:34
【问题描述】:
我正在添加电子邮件确认,当用户单击电子邮件激活链接时,它会发出获取请求以获取注册页面并填充注册表单。但是,我还想在此操作中将我的用户的 email_confirmed 属性更新为 true。我听说永远不会更改获取请求中的数据,但我不知道该怎么做。
【问题讨论】:
标签: ruby-on-rails ruby http web
我正在添加电子邮件确认,当用户单击电子邮件激活链接时,它会发出获取请求以获取注册页面并填充注册表单。但是,我还想在此操作中将我的用户的 email_confirmed 属性更新为 true。我听说永远不会更改获取请求中的数据,但我不知道该怎么做。
【问题讨论】:
标签: ruby-on-rails ruby http web
最好不要更改 GET 请求中的数据。它没有在语言或框架级别强制执行。
您可以做的是在发出 POST 请求的 GET 页面上显示一个确认电子邮件按钮。
【讨论】:
这是一个实用胜过迂腐的例子。确实,HTTP GET 应该是一个非修改且幂等的操作。但有时在这些情况下,GET 比 POST 或 PUT 更容易。它也很适合测试,只需将 URL 粘贴到浏览器中即可:)
【讨论】:
虽然最好不要更改 GET 请求中的数据,但在某些情况下您别无选择,这就是其中之一。
HTML 锚点(<a> 标签)只能向您的服务器提交 GET 请求。要使用其他方法(POST、PATCH 等),您必须使用 JavaScript,但不能依赖收件人的电子邮件客户端来运行它。
【讨论】:
为 GET 服务的页面可以包含一个按钮,该按钮触发修改状态的实际 (POST) 操作。
【讨论】: