可以说,我们正在设计一个网站,该网站需要许多步骤来获得用户的输入。用户将使用POST
提交数据,并使用GET
获取表单html页面。用户提交表单时,应该将其提交到同一路径还是下一个路径?
让我们假设
当前页面形式:/golf/member/
下一页形式:/golf/arena/
方法1(发布到同一页):
-POST
至/golf/member/
-重定向到/golf/arena/
方法2(发布到下一页):
-POST
至/golf/arena/
-重定向到/golf/arena/
答案 0 :(得分:0)
更简单的解决方案:
这是一个有趣的问题,有很多方法可以解决。我的第一个直觉是尝试将用户看到的内容与您的服务要求断开连接。我猜想您只是使用HTML表单来进行发布,可能值得进行ajax请求,然后使用客户端(浏览器端)代码重定向用户。这样,您可以发布到/golf/member
,API可以仅返回一个201 Created
,而您的客户端代码可以将其移至下一步,可能是/golf/arena
,可以再次执行此操作。
更多高级解决方案:
如果这是一个具有大量不同领域的重要功能,我什至可能考虑将其进一步发展。您可以获取服务器端代码来为用户提供整个“流程”。例如...
您可能有一个类似POST /feature/start
的端点,该端点可能返回一些json,例如:
{
"title": "Form page 1",
"form": {
"title": "Form title",
"fields": [
{ "title": "first name", "type": "input" },
{ "title": "surname", "type": "input" }
],
"actions": [
{ "label": "Next", "type": "button", "method": "POST", "url": "/feature/next"
]
}
}
然后,每个步骤都可以返回此标准JSON结构的新版本,然后您可以在客户端解释该JSON结构,并在每个步骤中使用它显示所需的表单。
以上仅是一个示例,可以更好地命名URL,但是概念意味着您正在从服务器端驱动数据收集,而只是使用前端来构建HTML,然后收集值并将它们发送到后端服务。这对于大型系统(例如注册护照等)真的非常方便。这样,您的前端就很笨了,如果您需要添加或删除步骤/字段,则只需更改服务器端代码。