POST请求应该发送到相同路径还是下一页路径?

时间:2018-12-17 07:31:42

标签: http express networking routing

可以说,我们正在设计一个网站,该网站需要许多步骤来获得用户的输入。用户将使用POST提交数据,并使用GET获取表单html页面。用户提交表单时,应该将其提交到同一路径还是下一个路径?

让我们假设 当前页面形式:/golf/member/
下一页形式:/golf/arena/

方法1(发布到同一页):
-POST/golf/member/
-重定向到/golf/arena/

方法2(发布到下一页):
-POST/golf/arena/
-重定向到/golf/arena/

1 个答案:

答案 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,然后收集值并将它们发送到后端服务。这对于大型系统(例如注册护照等)真的非常方便。这样,您的前端就很笨了,如果您需要添加或删除步骤/字段,则只需更改服务器端代码。