Смешивание форм запроса и файлов: передача дополнительных параметров в запросе post при передаче файла

#python #python-requests #fastapi

Вопрос:

В документации FAST API приведенный ниже пример приведен в качестве ссылки на то, как передавать дополнительные параметры в запросе post при передаче файла.

https://fastapi.tiangolo.com/tutorial/request-forms-and-files/

 from fastapi import FastAPI, File, Form, UploadFile

app = FastAPI()


@app.post("/files/")
async def create_file(
    file: bytes = File(...), token: str = Form(...)
):
 

Когда я делаю запрос на публикацию, как показано ниже, я получаю:

 requests.post(URL, files={'file': hdf5_file, 'token': 'teststring'})

422 Unprocessable Entity
{'detail': [{'loc': ['body', 'model_str'],
   'msg': 'str type expected',
   'type': 'type_error.str'}]}
 

Почему токен не распознается как строка? Из документации неясно, как должен выглядеть запрос post, который смешивает формы с файлами.

Ответ №1:

Для requests использования параметра files для загрузки файлов и data для отправки дополнительных данных формы. В этом случае все будет отправлено в виде разных частей с типом содержимого multipart/form-data :

 requests.post(URL, files={'file': hdf5_file}, data={'token': 'teststring'})