我一直在研究Tastypie API documentation for custom authorisation

有八种可能的方法可用来创建自定义授权类。


read_list
read_detail
create_list
create_detail
update_list
update_detail
delete_list
delete_detail


我真的很难理解每种方法的语义。它们与HTTP动词(GET,POST,PUT,PATCH,DELETE等)的对应关系如何?

最初,我认为*_list方法可能意味着...


  给我一个用户可以[创建,读取,更新,删除]的所有对象的列表


但是“创造”案...


  给我一个用户可以创建的所有对象的列表


...真的没有意义,因为对象已经创建。为了使我的解释有意义,这必须是用户可以创建的所有可能对象的列表(这显然是不可行的)。

那么create_list到底是什么意思? create_detail呢?与create_list有什么不同?

感谢您的澄清!

最佳答案

问题是关于哲学和概念的,实际上有3个问题,但让我尝试简要地回答您的问题。



* _list与* _detail:

* _list方法是用户有权访问的对象的过滤器。

* _detail方法是告诉我们是否可以访问确切对象的布尔值。

例:

read_list-过滤对象,用户将在site.com/api/v1/cool_object/上看到

read_detail-告诉我们是否允许用户查看site.com/api/v1/cool_object/2



将CRUD映射到HTTP(Tastypie):

创建-发布

阅读-获取

更新-PUT(上传新实体)/ PATCH(仅发送更改的字段)

删除-删除



为什么要create_list:

添加该方法只是为了保持一致性和一致性。因此,您认为其中没有任何实际意义是正确的。

我们甚至可以在tastypie/authorization.py中对其进行检查:


def create_list(self, object_list, bundle):
    """
    Unimplemented, as Tastypie never creates entire new lists, but
    present for consistency & possible extension.
    """

关于python - 在stylishpie的自定义授权中,create_list是指什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32490360/

10-14 18:05
查看更多