drf自动生成接口文档

drf自动生成接口文档

现在越来越流行前后端分离开发,使用ajax交互。所以api接口文档就变的十分有意义了。

一、介绍

  • REST framework可以自动帮助我们生成接口文档
  • 接口文档以网页的方式呈现
  • 自动接口文档能生成的是继承APIView及其子类的视图

自动生成接口文档有很多种工具,这里我们主要以coreapiswagger工具为例。

更多编写接口文档工具参考:https://blog.csdn.net/weixin_44185837/article/details/105933792

二、coreapi

官网链接:https://github.com/core-api/python-client

1.自动生成接口文档配置

安装:
pip3 install coreapi
配置
  • settings.py 配置
# 因为新版的restframework需要指定默认schema
    REST_FRAMEWORK = {
            "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.AutoSchema",
            # 下面的这个默认的配置但是使用可能会报错,目前无法解释
            # 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.openapi.AutoSchema',
        }
  • urls.py路由配置,一般配置在总路由里面
# 导入文档路由哦配置
from rest_framework.documentation import include_docs_urls
# 添加访问路由,参数title为网站标题
urlpatterns = [
        path('docs/', include_docs_urls(title='测试接口'))
	]

2.文档描述说明的定义位置

  1. 单一方法的视图,可以直接使用字符串描述该视图类的功能
class BookListView(generics.ListAPIView):
    """
    返回所有图书信息.
    """
  1. 包含多个方法的视图,在类视图的文档字符串中,分开方法定义,如
class BookListCreateView(generics.ListCreateAPIView):
    """
    get:
    返回所有图书信息.

    post:
    新建图书.
    """
  1. 对于视图集ViewSet,仍在类视图的文档字符串中封开定义,但是应使用action名称区分,如
class BookInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
    """
    list:
    返回图书列表数据

    retrieve:
    返回图书详情数据

    latest:
    返回最新的图书数据

    read:
    修改图书的阅读量
    """

3.访问接口文档网页

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

image-20210420223827620

  • 测试交互(新增测试)

sadas5422

  • 查询所有

sad23ewds2

4.Description 描述信息的添加

image-20210420224803398

  • models.py的类字段参数 help_text
class Book(models.Model):
    title = models.Charfield(max_length=32)
    price = models.IntegerField(help_text='这是书籍的价格')
  • 或者在序列化类中通过使用extra_kwargs为某字段添加额外的参数
class BookSerializers(ModelSerializer):
    class Meta:
        model = models.Book  # 指明该序列化器处理的数据字段从模型类Book参考生成
        fields = "__all__"  # 指明该序列化器包含模型类中的哪些字段,’all‘指明包含所有字段
        extra_kwargs = {
            'title': {
                'help_text': '这是书籍的名字'
            }
        }

image-20210420225057899

注意:

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

三、swagger

官网:https://github.com/marcgibbons/django-rest-swagger

安装与配置

1.安装

pip install django-rest-swagger

2.配置

  1. settings中注册app
INSTALLED_APPS = [
    'rest_framework_swagger',
]
  1. 在urls.py中添加配置
# 添加 get_schema_view 辅助函数
from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer,OpenAPIRenderer

# 参数 title 为接口网站标题
schema_view=get_schema_view(title='测试接口',renderer_classes=[OpenAPIRenderer,SwaggerUIRenderer])

# 添加路由
urlpatterns = [
    # coreapi
    path('docs/', include_docs_urls(title='接口测试')),
    # swagger
    path('docs2/', schema_view, name='docs2'),
]

文档描述说明的定义位置

  • 与 上面的coreapi 工具中的使用相同

展示

  • 页面展示

33334444eeee

  • 功能介绍

img

  • GET获取所有接口测试

33334444eee222e

  • POST新增图书测试

3333423123123222e

接口展示描述可以使用Markdown

  • 描述书写示例
class BookView2(ModelViewSet):
    """
       ## list:
       - 返回图书列表数据,通过Ordering字段排序

       ## retrieve:
       - 返回图书详情数据

       ## latest:
       - 返回最新的图书数据

       ## read:
       - 查询单个图书接口

       #### 请求参数
        | 字段名| 含义  | 类型   |
        |:------:|:------:|:------:|
        | title | 书籍名称    |  string |
        | price | 价格    |  int |
       """
    ...
  • 效果展示

image-20210421163211314

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Django REST Framework (DRF) 是一个用于构建 Web API 的强大工具,它是基于 Django 框架的。DRF 提供了方便的方式来处理 HTTP 请求,定义视图、序列化器、路由以及认证等组件,使得开发RESTful API变得更加高效和易于维护。 接口文档DRF中非常关键的一部分,它帮助开发者、团队成员和外部用户提供对API的清晰理解。在DRF中,你可以使用`rest_framework.authtoken`或`drf_yasg`库(如Swagger UI)来生成详细的API文档。以下是生成和使用DRF接口文档的一些步骤: 1. 安装必要的库(如`drf_yasg`): ```bash pip install djangorestframework drf-yasg ``` 2. 配置settings.py中的SWAGGER设置: ```python INSTALLED_APPS = [ # ... 'drf_yasg', 'rest_framework_swagger', ] ``` 3. 在`urls.py`中包含API和文档的URL路径: ```python from drf_yasg.views import get_schema_view schema_view = get_schema_view(title='Your API Name', public=True) urlpatterns = [ # Your API routes... path('openapi/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), ] ``` 4. 创建视图和定义序列化器: 使用DRF的ViewSet和Serializer为你的API资源定义行为。 5. 使用`@api_view`装饰器或`@action`方法来定义API操作。 6. 运行服务器并访问`http://yourserver.com/openapi/`,通常会显示一个交互式的Swagger UI页面,其中包含了你的API的所有公开接口和描述。 相关问题: 1. Swagger UI在DRF中起到什么作用? 2. 如何在DRF中使用`@api_view`装饰器定义API? 3. 如何自定义接口文档的主题和样式?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾维斯Echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值