У меня есть API, который я использую в Flask / Connexion.API написан на OpenAPI 3 для Swagger.Я отправляю данные через multipart / form-data в конечную точку, и все получает через , за исключением загруженного файла.Я начну с того, что поделюсь своим файлом OpenAPI YAML.Для файла, на который я ссылался в этом документе о том, как указать схему.
openapi: "3.0.0"
info:
description: No one is reading this
version: "1.0.0"
title: Super basic API endpoint
# Paths supported by the server application
paths:
/api/submit:
post:
summary: Process a new text submission asynchronously
operationId: submit.submit
requestBody:
content:
multipart/form-data:
schema:
x-body-name: submission
$ref: '#/components/schemas/Submission'
responses:
'200':
description: That's nice
components:
schemas:
Submission:
type: object
required:
- url
- mimeType
- language
- content
properties:
url:
type: string
format: uri
mimeType:
type: string
description: MIME type of the file submission
language:
type: string
pattern: '^[a-z]{3}$'
content:
type: array
items:
type: string
format: binary
Операция submit.submit вызывает следующий код Python:
from datetime import datetime
import uuid
def get_timestamp():
return datetime.now().strftime(("%Y-%m-%d %H:%M:%S"))
def submit(submission):
print(str(submission))
return { "timestamp": get_timestamp(), "uuid": str(uuid.uuid4()) }
Что печатает Python:
{'url': 'http://nosite.none', 'mimeType': 'text/plain', 'language': 'eng'}
Таким образом, никакого «содержимого» нет.Но я знаю, что данные отправляются, так как я перехватил их в своем браузере:
-----------------------------138508216052
Content-Disposition: form-data; name="url"
http://nosite.none
-----------------------------138508216052
Content-Disposition: form-data; name="mimeType"
text/plain
-----------------------------138508216052
Content-Disposition: form-data; name="language"
eng
-----------------------------138508216052
Content-Disposition: form-data; name="content"; filename="nonsense.txt"
Content-Type: text/plain
Now is the time for
all good men to come
to the aid of their
party.
-----------------------------138508216052--
Есть ли дополнительная отладка, которую я должен сделать с Connexion, которая скажет мне, если / почему она не передает 'контент'file?