zoukankan      html  css  js  c++  java
  • 生成项目依赖包文档、自动生成接口文档

    一. 生成项目依赖包文档的两种方式

    1.1 pipreqs模块

      项目中通常会安装很多模块,为了移植性更好,我们可以使用pipreqs模块生成依赖包文档。

      1.1 安装pipreqs模块

    pip install pipreqs

      1.2 生成对应项目的路径

      切换至项目根目录,或者是给一个项目的路径:

     D:youkutestluffyapi>pipreqs ./ --encoding=utf8

      上面项目名为luffyapi,后面加--encoding=utf8是防止因为编码问题报错,建议加上。

      1.3 新环境中安装依赖包

      将整个项目复制至新环境时,只需执行以下命令即可安装依赖包,在此之前先在新环境中安装pipreqs。

    pip install -r requriements.txt

       注意:该模块有时候无法生成所有依赖包,部分可能需要自己手动装的。

    1.2 pip freeze

      freeze是pip自带的生成依赖包的方法,推荐使用该方式,无需安装其他模块。不过该方法也无法生成所有依赖包,比如通过http安装的xadmin等,一般这些模块可以运行项目时根据报错的模块信息安装即可。

    # 比如可以写pip freeze > requirement.txt
    pip freeze > 保存时的文件名.格式 
    
    # 安装生成的依赖包,如pip install -r requirement.txt
    pip install -r 文件名.格式

    二. coreapi自动生成接口文档

      工作中接口文档的撰写如何手写很费时,djangorestframework为我们提供了自动生成接口文档的方法,不过该方法只会生成直接或间接继承APIView类的视图的接口文档。

      2.1 安装依赖包

    pip install -i https://pypi.douban.com/simple/ coreapi

      2.2 设置接口文档访问路径

       在总路由中添加接口文档路径,

      文档路由对应的视图配置为rest_framework.documentation.include_docs_urls,

      参数title为接口文档网站的标题

    from rest_framework.documentation import include_docs_urls
    
    urlpatterns = [
        ...
        path('docs/', include_docs_urls(title='站点页面标题'))
    ]

       2.3 文档描述说明的定义位置

     1) 单一方法的视图,可直接使用类视图的文档字符串,如

    class BookListView(generics.ListAPIView):
        """
        返回所有图书信息.
        """

    2)包含多个方法的视图,在类视图的文档字符串中,分开方法定义,如

    class BookListCreateView(generics.ListCreateAPIView):
        """
        get:
        返回所有图书信息.
    
        post:
        新建图书.
        """

    3)对于视图集ViewSet,仍在类视图的文档字符串中封开定义,但是应使用action名称区分,如

    class BookInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
        """
        list:
        返回图书列表数据
    
        retrieve:
        返回图书详情数据
    
        latest:
        返回最新的图书数据
    
        read:
        修改图书的阅读量
        """

      2.4 访问接口文档网页

      浏览器访问 127.0.0.1:8000/docs/,即可看到自动生成的接口文档。

      两点说明:

      1) 视图集ViewSet中的retrieve名称,在接口文档网站中叫做read

      2)参数的Description需要在模型类或序列化器类的字段中以help_text选项定义,如:

    class Student(models.Model):
        ...
        age = models.IntegerField(default=0, verbose_name='年龄', help_text='年龄')
        ...

      或

    class StudentSerializer(serializers.ModelSerializer):
        class Meta:
            model = Student
            fields = "__all__"
            extra_kwargs = {
                'age': {
                    'required': True,
                    'help_text': '年龄'
                }
            }
  • 相关阅读:
    windows下安装mysql-5.7.11-winx64
    memset库函数
    [转]全面解析《嵌入式程序员应该知道的16个问题》
    Cent OS 7 下 Redis 5.0.5 安装与配置
    SVN+TortoiseSVN的Windows版安装和配置
    工具和环境--目录(随时更新)
    Linux安装和配置Nodejs和NPM
    Windows10命令提示符窗口大小导致执行效率不同问题
    Windows安装Nodejs和npm以及创建项目
    WebStorm 2019.3.2安装与配置
  • 原文地址:https://www.cnblogs.com/maoruqiang/p/11210710.html
Copyright © 2011-2022 走看看