近来在编写接口的过程中,发现非正常的drf接口,即使框架配置了swagger,也不展示;将发现的问题及解决方案记录,以免再次踩坑;
问题表现:
def export_excel(request): pass
解决方案:增加@api_view()装饰器
方式1:直接通过注释进行描述
from rest_framework.decorators import api_view
@api_view(["POST"])
def export_excel(request):
"""
post:
导出查询数据;
请求params:?file_url= ,不传时,导出到桌面
请求体:{"data": 数据库执行接口返回的data或errors中的内容}
"""
pass
表现:
方式2:使用@swagger_auto_schema进行设置
from rest_framework.decorators import api_view from drf_yasg import openapi re_params = openapi.Parameter('file_url', openapi.IN_QUERY, description="请求参数:导出路径,非必填,默认桌面", type=openapi.TYPE_STRING) # 导出查询数据 @swagger_auto_schema( method='post', operation_summary='导出查询数据', manual_parameters=[re_params], request_body=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ "data": openapi.Schema(title="此请求体用查询的响应data,格式为{'data': data}", type=openapi.TYPE_STRING), } ), responses={200: "ok"} ) @api_view(["POST"]) def export_excel(request):
pass
表现:
yasg文档:https://drf-yasg.readthedocs.io/en/stable/