在写DRF接口的时候,如果我们使用的ModelViewset,这个时候生成的swagger接口文档中,参数和响应都是没有问题的。但是有些接口,我们需要定制,这时候的接口文档显得不那么友好。
栗子.py
from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
class StorageViewSet(APIView):
#定义warehouseId字字段
# required -> 是否必填
# in_ -> 应用为 query
#description -> 描述
#type -> 字符串
warehouseId = openapi.Parameter('warehouseId', required=True,in_=openapi.IN_QUERY, description='仓库Id',
type=openapi.TYPE_STRING)
#装饰器:
# manual_parameters ->查询使用的字段
#responses -> 响应结果
# operation_id ->随便填写,但是要唯一
# operation_description ->接口说明
@swagger_auto_schema(
manual_parameters=[warehouseId],
responses={
'200': openapi.Response('', GetStorageSerializer)
},
security=[],
operation_id='StorageViewSet-get',
operation_description='获取库存信息',
)
def get(self,request):
params = request.query_params
warehouseId = params.get('warehouseId')
warehouseId = Warehouse.objects.filter(id=warehouseId).first()
queryset = Storage.objects.filter(warehouseId=warehouseId).values('system', 'classify')\
.annotate(warehouseNumber=Sum('warehouseNumber'),
palautusNumber=Sum('palautusNumber'), )
serializer = GetStorageSerializer(queryset,many=True)
return SuccessResponse(data=serializer.data, msg="操作成功")