更简单的解决方案:
这是一个有趣的问题,有很多方法可以解决。我的第一直觉是尝试将用户所看到的内容与您的服务需求断开连接。我猜你只是使用 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,然后收集值并将它们发送到后端服务。这对于像注册护照或其他东西这样的大型系统来说非常方便。那么你的前端就很笨了,如果你需要添加或删除步骤/字段,你只需要更改服务器端代码。