我无法找到任何支持为文件上传API创建模式的工具。Swagger UI必须有一个按钮,允许测试人员上传文件用于测试目的。我使用firebase作为数据库,因此序列化器和模型不会出现在图片中。我只使用Django的rest框架。我看过drf-yasg的文档,其中建议使用Operation进行文件上传。但它是一个非常抽象和晦涩的文档。
bwntbbo31#
确保在视图中指定parser_classes。默认情况下,它是JSON解析器,不处理文件上传。使用MultiPartParser或FileUploadParser
parser_classes
MultiPartParser
FileUploadParser
class MyUploadView(CreateAPIView): parser_classes = (MultiPartParser,) ... @swagger_auto_schema(operation_description='Upload file...',) @action(detail=False, methods=['post']) def post(self, request, **kwargs): # Code to handle file
字符串
oiopk7p52#
下面是我的项目中的工作示例
from rest_framework import parsers, renderers, serializers, status from rest_framework.generics import GenericAPIView from rest_framework.response import Response class ContactSerializer(serializers.Serializer): resume = serializers.FileField() class ContactView(GenericAPIView): throttle_classes = () permission_classes = () parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.FileUploadParser) renderer_classes = (renderers.JSONRenderer,) serializer_class = ContactSerializer def post(self, request): serializer = self.serializer_class(data=request.data) if serializer.is_valid(raise_exception=True): data = serializer.validated_data resume = data["resume"] # resume.name - file name # resume.read() - file contens return Response({"success": "True"}) return Response({'success': "False"}, status=status.HTTP_400_BAD_REQUEST)
q9rjltbz3#
看看这个issue。你可以找到如何使用 @swagger_auto_schema 来创建这样的东西x1c 0d1x的数据
6rqinv9w4#
使用@swagger_auto_schema并使用以下manual_parameters上传文件manual_parameters=[openapi.Parameter(name="file",in_=openapi.IN_FORM,type=openapi.TYPE_FILE,required=True,description="Document")]
manual_parameters=[openapi.Parameter(name="file",in_=openapi.IN_FORM,type=openapi.TYPE_FILE,required=True,description="Document")]
4条答案
按热度按时间bwntbbo31#
确保在视图中指定
parser_classes
。默认情况下,它是JSON解析器,不处理文件上传。使用MultiPartParser
或FileUploadParser
字符串
oiopk7p52#
下面是我的项目中的工作示例
字符串
q9rjltbz3#
看看这个issue。你可以找到如何使用 @swagger_auto_schema 来创建这样的东西
x1c 0d1x的数据
6rqinv9w4#
使用@swagger_auto_schema并使用以下manual_parameters上传文件
manual_parameters=[openapi.Parameter(name="file",in_=openapi.IN_FORM,type=openapi.TYPE_FILE,required=True,description="Document")]