我创建了一个“食谱”视图集,我希望人们的功能能够喜欢不同的食谱。
我的视图集非常简单,它看起来像这样:
class RecipeViewset(ListModelMixin, RetrieveModelMixin, GenericViewSet):
queryset = Recipe.objects.filter(enabled=True)
serializer_class = RoutineSerializer我的urls.py使用了一个SimpleRouter (现在我没有任何url模式,所以我把它留空了:
urlpatterns = []
router = routers.SimpleRouter()
router.register('recipes', views.RecipeViewset, basename='recipes')
urlpatterns += router.urls这将为列表和详图创建两个端点:
www.example.com/recipes
www.example.com/recipes/1我在脑海中有几个选项,关于食谱的收藏点可能是什么样子:
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中发送。
发布于 2020-06-14 03:03:37
这似乎是一个很可能会用观点而不是事实来回答的问题,因为API设计对开发和消费者之间的合同是非常主观的。
但是,为了利用DRF中的嵌套资源,我认为您应该使用drf-nested-routers,因为它们提供了与您已有的类似的接口。
为此,我认为将这个端点设置为www.example.com/recipes/1/favorite会更容易一些,因为它在文档中已经有了示例,而且看起来工作得很好。
https://stackoverflow.com/questions/62364140
复制相似问题