可以重定向到'PUT`,`DELETE`方法吗?

时间:2016-12-24 15:47:36

标签: html httpbackend

在我的申请中,我有路由/users/37/verify_email。由于此路由的操作会更新数据库中的激活信息,因此我请客户使用PUT方法完成此请求。

在后端应用程序中,有许多步骤需要验证。成功验证后,我使用302 Found将客户端重定向到下一步,并进行了一些黑客攻击:

Location: /users/37/verify_email?_method=PUT

这对我来说有点难看。

这样可以进行重定向吗?

UPD

我关注REST,当我想要删除资源时,我会在管理页面上生成下一个链接:

<a href="/users/37?_method=DELETE">Delete</a>
<a href="/users/37"               >View  </a>

如果我们在浏览器中会有:

GET /users/37?_method=DELETE
GET /users/37

执行application/json时会有:

DELETE /users/37
GET /users/37

但我不确定将这些路由放入Location标题:

Location: /users/37?_method=DELETE

我无法找到这种语法:

Location: DELETE /users/37

1 个答案:

答案 0 :(得分:0)

嗯,您无法在HTML表单中关注REST,因为您仅限于GET and POST方法。

只需创建网址/users/37/delete,在此处执行所有验证,并在成功时将其删除。如果您想拥有REST API,请将其与仅使用JSON的界面分开保存,因为此处的HTML非常有限。

此外,对一个URL进行验证并将其重定向到自行删除的URL非常危险。如果您的用户会发现哪个URL正在删除内容怎么办?他可以跳过验证。

考虑使用微服务或只是从后端代码调用API(API只能在您的Intranet上运行,只能从后端访问,而不能从外部访问)。