Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为端点使用单个处理程序将违反REST原则?_Python_Rest_Web Services_Flask_Crud - Fatal编程技术网

Python 为端点使用单个处理程序将违反REST原则?

Python 为端点使用单个处理程序将违反REST原则?,python,rest,web-services,flask,crud,Python,Rest,Web Services,Flask,Crud,关于教程(Miguel Grinberg:RESTful应用与Flask),我遇到了一些疑问 本教程展示了如何创建具有多个路由的资源,其中每个路由都有不同的行为 我的问题是关于REST体系结构: 对于一个资源有一个更紧凑的结构,而不是每个HTTP谓词有多个路由,这会违反REST原则吗 下面是我所说的一个例子: @app.route('/todo/api/v1.0/tasks', methods=['GET', 'POST']) @app.rout

关于教程(Miguel Grinberg:RESTful应用与Flask),我遇到了一些疑问

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

我的问题是关于REST体系结构:

  • 对于一个资源有一个更紧凑的结构,而不是每个HTTP谓词有多个路由,这会违反REST原则吗
下面是我所说的一个例子:

@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  
@app.route('/todo/api/v1.0/tasks',方法=['GET','POST']
@app.route('/todo/api/v1.0/tasks/',方法=['GET','PUT','DELETE'])
def任务(任务id=无):
如果任务id为“无”:
如果request.method==“GET”:
通过
elif request.method==“POST”:
通过
其他:
如果request.method==“GET”:
通过
elif request.method==“PUT”:
通过
elif request.method==“删除”:
通过
对于一个资源有一个更紧凑的结构,而不是每个HTTP谓词有多个路由,这会违反REST原则吗

没有


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

您的代码永远不会违反REST原则,它只与方法、url和资源上的操作有关。但是,将所有请求的处理放在一个函数中会使代码的维护更加困难。