应用程序路由仅服务 html?应用程序路由应该更新状态吗?

Application route serve html only? Should application route update state?

我想知道在提供注册页面以创建新用户等场景中,最佳做法是什么。这里有两件不同的事情。1) 应用程序必须转发用户创建 html 页面和 2) 用户创建论坛必须传递到端点以进行用户创建。

您是否应该将这两个进程结合起来作为您的应用程序逻辑的一部分?或者应该由单独的 API 处理用户创建并且应用程序将只服务 html?

选项#1:

// Application routes serving HTML for GET and updating user state for POST
@app.route('/signup', methods=['GET', 'POST'])
                   return html--^    ^---- create new user

选项#2:

// Application routes serving HTML for GET:  
@app.route('/signup', methods=['GET'])
  
// Seperate REST API endpoint for user creation:  
@app.route('/api/user/', method=['POST'])

您应该将 HTML 服务与实际构成您的后端 API 的后端服务分开。这是两个独立的资源,具有特定的用途,您不应像在单个端点中那样混合和匹配它们。

这也将使您更容易重用后端端点,因为从另一个系统调用 URI /api/user 上的 API 来创建资源更有意义,而不是通过 URI /signup 执行此操作,这仅在您正在创建的应用程序的上下文中才有意义。

我对 Flask 或 python 不是很熟悉,但是有几个教程着重于使用两者创建 RESTful,例如这个: https://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask

如果您需要 return 任何 JSON 数据,请不要忘记使用 jsonify 来设置您的 API 响应。