HTTP状态码(201和204状态码的使用)

201与204
201为创建成功状态码
204为删除成功状态码

@swagger_auto_schema(
        operation_summary="取消收藏",
        request_body=FavoritesDeleteSerializer,
        responses={
            "204": "OK",
        },
        operation_description="取消收藏",
    )
    @action(methods=["post"], detail=True, url_path="cancel-favorites")
    def cancel_favorites(self, request, *args, **kwargs):
        knowledge_obj = self.get_object()
        create_user_id = request.user.id
        Favorites.objects.filter(
            id=knowledge_obj.id, create_user_id=create_user_id
        ).delete()
        return Response(status=status.HTTP_200_OK)

    @swagger_auto_schema(
        operation_summary="收藏知识",
        request_body=FavoritesDeleteSerializer,
        responses={
            "201": FavoritesDeleteSerializer(many=True),
        },
        operation_description="收藏知识",
    )
    @action(methods=["post"], detail=True, url_path="favorites")
    def create_favorites(self, request, *args, **kwargs):
        knowledge_obj = self.get_object()
        serializer = FavoritesModelSerializer(data={"knowledge_id": knowledge_obj.id})
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data, status=status.HTTP_200_OK)

在上述代码中,收藏是创建收藏对象,但是这里的Favorites是一张关系表,所以在此不需要关系是否创建成功,又因为是使用的post方法,在post方法中一般返回200、201状态码,在这里不使用201故使用200状态码
取消收藏是删除对象,删除应该使用204状态码,但是这里使用的是post方法应该返回200、201状态码,又因为201是创建成功的状态码,所以不可以使用,在此使用200状态码

你可能感兴趣的:(HTTP,python,django)