Django Rest框架-高效的API设计

Django Rest框架-高效的API设计,django,django-rest-framework,api-design,Django,Django Rest Framework,Api Design,在任何RESTAPI中 数据来自请求体 我们在上面执行一些逻辑 数据并执行一些查询 3.最后API响应序列化数据 我的问题是:- 数据处理逻辑放在哪里?设计RESTAPI的有效方法是什么?数据逻辑主要放在视图上。您可以使用任何视图,包括功能视图、通用API视图和视图集。DRF中有三种类型的视图 你应该习惯于使用其中的一个,但是你应该理解所有这些。通过这个链接。 我个人觉得使用CBV(基于类的视图)很舒服。大多数SQL连接也发生在视图中 例如: class GetReviewAPIView(Li

在任何RESTAPI中

  • 数据来自请求体
  • 我们在上面执行一些逻辑 数据并执行一些查询
  • 3.最后API响应序列化数据

    我的问题是:-
    数据处理逻辑放在哪里?设计RESTAPI的有效方法是什么?

    数据逻辑主要放在视图上。您可以使用任何视图,包括功能视图、通用API视图和视图集。DRF中有三种类型的视图

    你应该习惯于使用其中的一个,但是你应该理解所有这些。通过这个链接。

    我个人觉得使用CBV(基于类的视图)很舒服。大多数SQL连接也发生在视图中

    例如:

    class GetReviewAPIView(ListAPIView):
        permission_classes = [IsAuthenticated]
        serializer_class = ReviewSerializer
    
        def get_queryset(self):
            user = self.request.user
            return Review.objects.filter(user=user)
    
    上面是CBV的一个很好的例子,其中API调用只获取特定用户的所有评论。用户表和审阅表之间发生SQL连接


    此外,还可以在序列化程序类中编写逻辑,而不是在视图中编写。这主要是在您必须为每个序列化程序字段编写不同的逻辑并为每个字段设置特征时完成的。如果你愿意,我也可以给你举个例子。

    但是如果逻辑是40-50行,那么把它放在视图中是没有效率的。没有行不是问题。我已经为过滤api编写了50多行if-else逻辑,它工作良好且高效。主要是需求。您可以根据需要和业务逻辑,在视图或序列化器类中编写逻辑。