Django api-如何使用DestroyAPIView和维护RESTfusion

Django 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

如何使用Django
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)