其他分享
首页 > 其他分享> > 测试开发平台--生成接口测试文档(十三)

测试开发平台--生成接口测试文档(十三)

作者:互联网

1.生成API文档需要安装
coreapi(必须)
Pygments(可选)
Markdown(可选)
DRF在低于3.10之前不需要添加,在之后需要添加coreapi

2. 在全局路由里配置

from django.contrib import admin
from django.urls import path, include
from rest_framework.documentation import include_docs_urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('projects.urls')),
    path('docs/', include_docs_urls(title='测试平台开发接口文档'))
]

3.给接口添加汉字的注释

class ProjectViewSet(viewsets.ModelViewSet):
    """
    create:创建项目
    retrieve:获取项目详情数据
    update:完整更新项目
    partial_update:部分更新项目
    list:获取项目列表数据
    destroy:删除项目
    names:获取所有的项目名和项目ID
    interfaces:获取某个项目下的所有接口信息
    """
    # 往往要指定queryset查询集类属性,不能改成其他名字
    queryset = Projects.objects.all()
    # 往往需要用serializer_class指定序列化器类
    serializer_class = serializers.ProjectNamesModelSerializer
    # 指定过滤的引擎,以后过滤都使用这个,可以在全局使用
    filter_backends = [DjangoFilterBackend, OrderingFilter]
    # 指定过滤字段
    filterset_fields = ['name', 'leader', 'tester']
    # 指定排序字段,前端需要使用ordering作为key,指定的字段名作为value,一般默认升序,如要降序加-号
    ordering_fields = ['id', 'leader', 'tester']

    # 自定义action,不需要返回那么多字段,只需要返回id和name
    # 1.使用action装饰器来声明自定义动作
    # 2.默认方法名就是动作名
    # methods参数来指定该动作支持的请求方法,默认为get
    # detail参数用于指定该动作,要处理的是是否为详情资源对象(url是否需要传递pk主键)
    # 如果获取详情数据,那么需要指定detail为True,否则为False
    # @action(methods=['get'], detail=False, url_name='nn', url_path='mm')
    # url_name为路由别名,url_path为路由路径
    @action(methods=['get'], detail=False)
    def names(self, request, *args, **kwargs):
        queryset = self.get_queryset()
        # serializer = serializers.ProjectModelSerializer(instance=queryset, many=True)
        serializer = self.get_serializer(instance=queryset, many=True)
        return Response(serializer.data)

    def get_serializer_class(self):
        # python的三元运算,为True返回前边,为False返回后边
        return serializers.ProjectNamesModelSerializer if self.action == "names" else self.serializer_class

4.查看页面信息

 

标签:get,--,self,queryset,指定,文档,测试,path,serializer
来源: https://blog.csdn.net/cxl0406/article/details/120605764