Django中restful风格DRF自定义接口自定义传参文档注释问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

django的restful框架文档生成可参考doc文档生成
本篇主要记录restful自定义接口传参,以及文档注释的问题

提示:以下是本篇文章正文内容,下面案例可供参考

一、restful接口

restful是一种风格架构,每一个接口地址,代表了一种资源

  1. GET(SELECT):从服务器取出资源(一项或多项)。
  2. POST(CREATE):在服务器新建一个资源。
  3. PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  4. DELETE(DELETE):从服务器删除资源

二、自定义入参的自定义接口

1.在视图类下自定义方法,添加action

代码如下(示例):

class ImportExcelViews(mixins.CreateModelMixin,
                       mixins.UpdateModelMixin,
                       mixins.DestroyModelMixin,
                       mixins.ListModelMixin,
                       GenericViewSet):
                       
	queryset = FileUpload.objects.all()  # 指明该视图集在查询数据时使用的查询集
    serializer_class = FileUploadSerializers  # 指明该视图在进行序列化或反序列化时使用的序列化器
    
    @action(methods=['get'], detail=False)
    def clean(self, request,  *args, **kwargs):
        clean_type = request.GET.get('clean_type', 1)  # 数据清洗类型
        id = request.GET.get('id')                     # 主键id

        instance = FileUpload.objects.filter(id=id).first()  # 模型对象

        file_path = os.path.join(base_dir, 'static', 'media', str(instance.file))
        df = pd.read_excel(file_path)
        df = df.dropna(axis=1)  # 清除掉为空的列

        if clean_type == 1:
            df = df.dropna(axis=0)
        elif clean_type == 2:
            for column in list(df.columns[df.isnull().sum() > 0]):
                mean_val = df[column].mean()
                df[column].fillna(mean_val, inplace=True)
        res = df.to_dict()

        return Response(res)

此时,自定义接口就已经成功了
打开docs,可以看到接口已经存在,但是并没有入参和文档注释
在这里插入图片描述

2.添加文档注释

添加文档注释:

class ImportExcelViews(mixins.CreateModelMixin,
                       mixins.UpdateModelMixin,
                       mixins.DestroyModelMixin,
                       mixins.ListModelMixin,
                       GenericViewSet):
    """
    list:
        获取原始数据集列表信息
    create:
        上传数据集文件
    delete:
        删除原始数据集
    update:
        修改上传数据集内容
    clean_data:
        样本清洗
    details:
        统计样本详情以及缺失值情况
    partial_update:
        修改单个属性值接口
    """

给视图类添加文档注释,打开docs,可以看到接口注释已成功添加
在这里插入图片描述

3.给自定义接口添加自定义参数

首先自定义一个Schema:

# 在接口中添加自定义请求字段
cleanSchema = ManualSchema(
    fields=[
        coreapi.Field(name="id", required=True, location="query", schema=coreschema.Integer(description="主键id")),
        coreapi.Field(name="clean_type", required=False, location="query", schema=coreschema.Enum(enum=[1, 2], description="清洗方式(1:删除, 2:填充均值)"))
    ]
)

然后再action中添加自定义schema
在这里插入图片描述
此时打开docs,发现参数已经出现,但接口注释却消失了
在这里插入图片描述
此时再在schema中添加一个description字段

cleanSchema = ManualSchema(
    description='清洗数据集',
    fields=[
        coreapi.Field(name="id", required=True, location="query", schema=coreschema.Integer(description="主键id")),
        coreapi.Field(name="clean_type", required=False, location="query", schema=coreschema.Enum(enum=[1, 2], description="清洗方式(1:删除, 2:填充均值)"))
    ]
)

打开docs,接口注释已出现
在这里插入图片描述
测试接口,调用成功:
在这里插入图片描述

总结

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

方寸之间 

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

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

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

打赏作者

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

抵扣说明:

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

余额充值