Я использую Swagger python - flask Framework для создания API OpenAPI 3, который должен выполнять следующие действия:
1. Upload a video file
2. Upload an array of images
3. Upload extra string data.
Я могу успешно загрузить один файл успешно, используя:
MyFileUploadAPI:
post:
operationId: my_file_upload
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/videofile'
components:
schemas:
videofile:
type: object
properties:
upload:
type: string
format: binary
# This works fine
def my_file_upload(videofile):
file_name = videofile.filename
И я могу загрузить массив изображений и других данных, используя:
MyMultipleImagesUploadAPI:
post:
operationId: multiple_files
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/multiplefiles'
components:
schemas:
multiplefiles:
type: object
properties:
Images:
items:
$ref: '#/components/schemas/MyImage'
TotalCount:
type: integer
# This works fine
def multiple_files(body):
if connexion.request.is_json:
body = multiplefiles.from_dict(connexion.request.get_json())
images = body._images
count = body._totalcount
Теперь я могу sh объединить их вместе (загрузка видео + несколько изображений + дополнительные данные) Итак, я сделал следующее:
/MyEverythingAPI:
post:
operationId: video_multiple_images
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/everything'
components:
schemas:
everything:
type: object
properties:
Video:
type: string
format: binary
Images:
type: array
items:
$ref: '#/components/schemas/MyImage'
TotalCount:
type: integer
# This has issues
def video_multiple_images(body, video_clip, **kwargs):
#body = {'images': ['[object File]'], 'totalcount': 2}
uploaded_file_name = video_clip.filename
Теперь есть две проблемы, которые, как я вижу, просто не верны:
Проблема 1. Виде_клип не получался перешел к функции video_multiple_images .
Я отладил и отследил ее и увидел, что она не добавляется, потому что в мою сигнатуру функции не было добавлено ** kwargs. Когда я добавил это, видео-файл начал проходить через. Эта статья помогла мне решить эту часть: https://github.com/zalando/connexion/pull/753/files Я могу решить эту проблему, но хотел бы знать, почему это так.
Выпуск 2. The массив изображений отображается как [объектный файл] '' [объектный файл] '' и т. д. c. Этот пост указывает, что это не поддерживается в OpenAPI 3: В Swapger openapi v3.0.0, проблема при загрузке нескольких файлов
Так как я могу передать видеофайл + массив изображений