首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >DRF YASG自定义

DRF YASG自定义
EN

Stack Overflow用户
提问于 2019-03-06 00:26:32
回答 1查看 5.7K关注 0票数 8

我正在试着用yasg定制我的api文档。

首先,我想确定我自己的部分的名称,以及应该在此部分中包括哪些端点。似乎部分的命名基于第一个前缀,而不属于最长的公共前缀,例如:

如果我们的urls是api/v1/message和api/v1/test,那么这些部分将被命名为message和test。有没有办法让我确定此部分的自定义命名?

此外,每个部分的介绍都是空的,我如何在这里添加文本?

最后但并非最不重要的,条纹有这些惊人的分隔符,我如何在drf yasg中添加这些分隔符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-20 07:21:45

目前,我使用APIView和@swagger_auto_schema来定义我的端点的文档。

在下面的代码中,您可以看到如何添加更多信息来定义终结点。我希望它能帮助你

代码语言:javascript
代码运行次数:0
运行
复制
##serializers.py

class CategorySerializer(serializers.ModelSerializer):
    """
    Serializing Categories 
    """
    class Meta:
        model = Category
        fields = [
            'id', 'name', 'slug'
        ]
        read_only_fields = [
           'slug', 
        ]


##views.py

username_param = openapi.Parameter('username', in_=openapi.IN_QUERY, description='Username',
                                type=openapi.TYPE_STRING)
email = openapi.Parameter('email', in_=openapi.IN_QUERY, description='Email',
                                type=openapi.TYPE_STRING)  
category_response = openapi.Response('response description', CategorySerializer)    

class CategoryList(APIView):
    permission_classes = [AllowAny]
          
    @swagger_auto_schema(
        manual_parameters=[username_param, email],
        query_serializer=CategorySerializer,
        responses = {
            '200' : category_response,
            '400': 'Bad Request'
        },        
        security=[],
        operation_id='List of categories',
        operation_description='This endpoint does some magic',
    )
    def get(self, request, format=None):
        """
        GET:
        Return a list of all the existing categories.
        """
        categories = Category.objects.all()
        serializer = CategorySerializer(categories, many=True)
        return Response(serializer.data)


    @swagger_auto_schema(
        request_body=CategorySerializer,
        query_serializer=CategorySerializer,
        responses={
            '200': 'Ok Request',
            '400': "Bad Request"
        },
        security=[],
        operation_id='Create category',
        operation_description='Create of categories',
    )
    def post(self, request, format=None):
        """
        POST:
        Create a new category instance.
        """
        serializer = CategorySerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(created_by=self.request.user)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

最后,如果您想按链接查看分组中的端点,可以在urls.py中测试注释下面这一行

代码语言:javascript
代码运行次数:0
运行
复制
#urlpatterns = format_suffix_patterns(urlpatterns)

下面是一些你应该如何看到它的屏幕

您可以在以下链接中找到更多信息:https://drf-yasg.readthedocs.io/en/stable/custom_spec.html

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

https://stackoverflow.com/questions/55007336

复制
相关文章

相似问题

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