Django api-如何使用DestroyAPIView和维护RESTfusion
如何使用DjangoDjango api-如何使用DestroyAPIView和维护RESTfusion,django,api,django-rest-framework,Django,Api,Django Rest Framework,如何使用DjangoDestroyAPIView和DetailAPIView并仍然保持普遍接受的RESTfusion实践 如果我正确理解REST,它应该如下所示(仅一个示例) 然后将在Django中创建一个视图类(generics.detailapieview)或方法来处理调用 在REST世界中,我相信我们会使用一个通用API类来处理 方法(获取…) 但是如果我想使用类(generics.DestroyAPIView)来处理删除游戏的调用。 那我就得用 /api/game/delete/222
DestroyAPIView
和DetailAPIView
并仍然保持普遍接受的RESTfusion实践
如果我正确理解REST,它应该如下所示(仅一个示例)
然后将在Django中创建一个视图类(generics.detailapieview
)或方法来处理调用
在REST世界中,我相信我们会使用一个通用API类来处理
方法(获取…)
但是如果我想使用类(generics.DestroyAPIView
)来处理删除游戏的调用。
那我就得用
/api/game/delete/222
将请求发送到正确的视图
在我看来,这与宁静是不一致的。
对于删除方法,应使用HTTP发送删除请求,并使用相同的模式匹配/apt/game/222
删除游戏。这是多余的
问题:我遗漏了什么吗
总之
选项1:
/api/game/delete/222 (DestroyAPIView)
/api/game/detail/222 (DetailAPIView)
选项2
/api/game/222 (RetrieveDestroyAPIView)
我想这两种方法都是有效的,只要它是明确的,并且是一致的,如下所述。没有“正确”的方法。我不确定“宁静”会影响你在这里提出的要求。只要有意义,使用不同的匹配模式是完全可以的 在给出的示例中,通常我们没有
/api/game/222
作为泛型。这是因为List
返回所有游戏的列表,我们不会在中传递id
<代码>创建
正在尝试创建新的游戏
。您还没有id
,因为它不在数据库中,所以这两种匹配模式通常应该是/api/game/
/api/game/222
-这样的模式,我们通常用于泛型。RetrieveUpdatedStroyapiView
,因为通过url中给定的id
,我们可以获得正确的game
对象来检索、更新或删除它
关于Restful API,本文中的答案解释了更多关于“RESTfull”的内容。我不确定“RESTfull”是否会影响您在这里提出的问题。只要有意义,使用不同的匹配模式是完全可以的 在给出的示例中,通常我们没有
/api/game/222
作为泛型。这是因为List
返回所有游戏的列表,我们不会在中传递id
<代码>创建
正在尝试创建新的游戏
。您还没有id
,因为它不在数据库中,所以这两种匹配模式通常应该是/api/game/
/api/game/222
-这样的模式,我们通常用于泛型。RetrieveUpdatedStroyapiView
,因为通过url中给定的id
,我们可以获得正确的game
对象来检索、更新或删除它
关于Restful API,本文中的答案解释了更多关于“Restful”的内容。您只需将
DELETE
动词发送到/API/game/222
即可删除游戏。这是REST背后的基本概念之一。您只需将DELETE
动词发送到/api/game/222
即可删除游戏。这是REST背后的基本概念之一。我更新了这个问题,以更好地反映我所问的问题。但我相信答案是你的第一句话。“只要有意义”我更新了问题,以更好地反映我的问题。但我相信答案是你的第一句话。“只要有意义”
/api/game/222 (RetrieveDestroyAPIView)