我一直在研究Tastypie API documentation for custom authorisation .
有八种可能的方法可以实现来创建自定义授权类。
读取列表
read_detail
创建列表
create_detail
update_list
update_detail
删除列表
delete_detail
我真的很难理解这些方法的语义。它们到底如何对应于 HTTP 动词(GET、POST、PUT、PATCH、DELETE...等)?
最初,我认为 *_list
方法可能意味着......
Give me a list of all objects that the user can [create, read, update, delete]
但是“创建”案例...
Give me a list of all objects that the user can create
...确实没有意义,因为对象已经被创建了。为了使我的解释有意义,这必须是用户可以创建的所有可能对象的列表(这显然是不可行的)。
那么 create_list
的实际含义是什么? create_detail
怎么样?它与 create_list
有何不同?
感谢您的澄清!
最佳答案
问题是关于哲学和概念的,实际上有3个问题,但让我尝试简单地回答你的问题。
<小时/>*_list 与 *_detail:
*_list 方法是用户有权访问的对象的过滤器。
*_detail 方法是 bool 值,告诉我们是否可以访问确切的对象。
示例:
read_list - 过滤用户将在 site.com/api/v1/cool_object/ 上看到的对象
read_detail - 告诉我们是否允许用户查看site.com/api/v1/cool_object/2
<小时/>将 CRUD 映射到 HTTP (Tastypie):
创建 - 发布
阅读 - 获取
UPDATE - PUT(上传新实体)/PATCH(仅发送更改的字段)
删除 - 删除
<小时/>为什么创建_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 - Tastypie的自定义授权中create_list指的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490360/