【问题标题】:Application route serve html only? Should application route update state?应用程序路由仅服务 html?应用程序路由是否应该更新状态?
【发布时间】:2020-09-09 02:05:59
【问题描述】:

我想知道对于像提供注册页面来创建新用户这样的场景来说,最佳做法是什么。这里发生了两件不同的事情。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'])

【问题讨论】:

    标签: rest web-applications architecture backend api-design


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 2015-09-17
      • 2013-10-26
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      相关资源
      最近更新 更多