如何从URL调用HTTP PUT

本文关键字:HTTP PUT 调用 URL | 更新日期: 2023-09-27 18:06:54

场景:-我有一个表单,一旦用户提交了这个表单,就会向用户发送一封邮件。像往常一样,邮件正文中会显示一个激活链接。

如果用户点击链接,他会被重定向到页面,现在访问url时,我想更新我的DB表中的字段:-

  1. isEmailVerifiedtrue
  2. 验证日期

我正在使用WebAPI和HTTPPUT操作来更新数据库

ControllerName是注册,我不希望用户点击任何额外的按钮来更新,我希望如果用户访问url,HTTPPut(或更新(操作应该被调用,并且一旦用户点击,链接将无效。

如何从URL调用HTTP PUT

我假设这个场景中的动作流是这样的:

  1. 用户在网页上填写表格
  2. 用户将表单提交到您的web api后端
  3. 后端保存从表单提交的数据
  4. 后端发送一封电子邮件,其中包含指向您的应用程序的链接
  5. 用户阅读电子邮件并点击链接

您希望步骤5中的操作在后端触发一些其他操作,即更新数据库中的一些数据,这些数据已经实现并在api中作为http PUT方法公开。

问题是,单击浏览器中打开的电子邮件中的链接是因为无法指定http方法。在浏览器中导航到URL是一个GET请求,这就是您正在做的事情。所以你的PUT动作永远不会被击中。

要解决此问题,您可以将操作从PUT更改为GET

更改此项:

[HttpPut]
[Route("verify/{hash}")
public void VerifyEmail(string hash){
   // your implementation logic
}

到此:

[HttpGet]
[Route("verify/{hash}")
public void VerifyEmail(string hash){
   // your implementation logic
}