Как добавить файл и JSON-данные в POST-запрос FastAPI?
Вопрос проверяет способность обрабатывать multipart-запросы, содержащие как файлы, так и JSON-данные.
Короткий ответ
FastAPI позволяет использовать File для загрузки файлов и Form для получения других данных в multipart-запросах.
Длинный ответ
В FastAPI можно обрабатывать запросы, содержащие файлы и JSON-данные, используя специальные параметры маршрутов:
File(...) для загрузки файлов.
Form(...) для данных в теле запроса.
Для сложных структур данных лучше использовать модели Pydantic.
Пример обработки файла и JSON-данных:
from fastapi import FastAPI, File, Form, UploadFile
from pydantic import BaseModel
app = FastAPI()
class Metadata(BaseModel):
name: str
description: str
@app.post("/upload/")
async def upload(file: UploadFile = File(...), name: str = Form(...), description: str = Form(...)):
return {"filename": file.filename, "name": name, "description": description}
Особенности:
- JSON-данные передаются через параметры формы.
- Файлы обрабатываются как UploadFile для оптимизации памяти.
Когда использовать:
- Для API, обрабатывающих файлы с метаданными, например, загрузка изображений с описанием.a