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

文章目录

前言一、restful接口二、自定义入参的自定义接口1.在视图类下自定义方法,添加action2.添加文档注释3.给自定义接口添加自定义参数

总结

前言

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

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

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

一、restful接口

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

GET(SELECT):从服务器取出资源(一项或多项)。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。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,接口注释已出现 测试接口,调用成功:

总结

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: