【问题标题】:Having a single handler for an endpoint would be against REST principles?为端点使用单个处理程序会违反 REST 原则吗?
【发布时间】:2018-11-12 11:06:50
【问题描述】:

关于this 教程(Miguel Grinberg:使用 Flask 的 RESTful 应用程序),我遇到了一些疑问。

本教程展示了如何创建具有多个路由的资源,并且每个路由都有不同的行为。

我的问题是关于 REST 架构的:

  • 是否违反 REST 原则,为资源提供更紧凑的结构,而不是为每个 HTTP 动词设置多个路由?

下面是我所说的一个例子:

@app.route('/todo/api/v1.0/tasks', methods=['GET', 'POST'])                      
@app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['GET', 'PUT', 'DELETE'])
def tasks(task_id=None):                                                    
    if task_id is None:                                                         
        if request.method == "GET":                                             
            pass                                                                
        elif request.method == "POST":                                          
            pass                                                                
    else:                                                                       
        if request.method == "GET":                                             
            pass                                                                
        elif request.method == "PUT":                                           
            pass                                                                
        elif request.method == "DELETE":                                        
            pass  

【问题讨论】:

  • 您的代码永远不会违反 REST 原则,它只与方法、url 和对资源的操作有关。但从不知道你如何实现它。
  • 但是将所有请求的处理放在一个函数中会使您的代码更难维护。

标签: python rest web-services flask crud


【解决方案1】:

是否违反 REST 原则,对资源进行更紧凑的构造,而不是为每个 HTTP 动词设置多个路由?

没有。

REST 和 HTTP 都不关心您如何实现消息处理程序。他们只关心消息的语义。只要您的实现响应与无聊的超媒体文档存储的响应没有区别,您就很好。

【讨论】:

    猜你喜欢
    • 2015-01-22
    • 2014-03-06
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多