首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Rest框架: URL端点在使用视图集时添加'Favorite/Like/Rate‘功能?

Django Rest框架: URL端点在使用视图集时添加'Favorite/Like/Rate‘功能?
EN

Stack Overflow用户
提问于 2020-06-14 02:37:18
回答 1查看 116关注 0票数 0

我创建了一个“食谱”视图集,我希望人们的功能能够喜欢不同的食谱。

我的视图集非常简单,它看起来像这样:

代码语言:javascript
复制
class RecipeViewset(ListModelMixin, RetrieveModelMixin, GenericViewSet):
    queryset = Recipe.objects.filter(enabled=True)
    serializer_class = RoutineSerializer

我的urls.py使用了一个SimpleRouter (现在我没有任何url模式,所以我把它留空了:

代码语言:javascript
复制
urlpatterns = []
router = routers.SimpleRouter()
router.register('recipes', views.RecipeViewset, basename='recipes')
urlpatterns += router.urls

这将为列表和详图创建两个端点:

代码语言:javascript
复制
www.example.com/recipes
www.example.com/recipes/1

我在脑海中有几个选项,关于食谱的收藏点可能是什么样子:

代码语言:javascript
复制
www.example.com/recipes/1/favorite
www.example.com/recipes/favorite/1
www.example.com/favorite/recipes/1
www.example.com/recipes-favorite/1

哪种方法是最好的,Django提供了一种简单的方法来实现这一点吗?

Viewset @action装饰器可以用于此吗?

PS:用户将在报头中发送Auth令牌,因此不需要在URL中发送。

EN

回答 1

Stack Overflow用户

发布于 2020-06-14 03:03:37

这似乎是一个很可能会用观点而不是事实来回答的问题,因为API设计对开发和消费者之间的合同是非常主观的。

这里有一些API子资源设计技巧的链接:[1] [2]

但是,为了利用DRF中的嵌套资源,我认为您应该使用drf-nested-routers,因为它们提供了与您已有的类似的接口。

为此,我认为将这个端点设置为www.example.com/recipes/1/favorite会更容易一些,因为它在文档中已经有了示例,而且看起来工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62364140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档