在我的申请中,我有路由/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
答案 0 :(得分:0)
嗯,您无法在HTML表单中关注REST,因为您仅限于GET and POST方法。
只需创建网址/users/37/delete
,在此处执行所有验证,并在成功时将其删除。如果您想拥有REST API,请将其与仅使用JSON的界面分开保存,因为此处的HTML非常有限。
此外,对一个URL进行验证并将其重定向到自行删除的URL非常危险。如果您的用户会发现哪个URL正在删除内容怎么办?他可以跳过验证。
考虑使用微服务或只是从后端代码调用API(API只能在您的Intranet上运行,只能从后端访问,而不能从外部访问)。