Как загрузить файлы и список словарей, используя BaseModel Pydantic в FastAPI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как загрузить файлы и список словарей, используя BaseModel Pydantic в FastAPI?

Сообщение Anonymous »

У меня есть следующий пример кода:

Код: Выделить всё

from fastapi import File, UploadFile, Request, FastAPI, Depends
from typing import List
from fastapi.responses import HTMLResponse
from pydantic import BaseModel, Field
from typing import Optional

app = FastAPI()

class BaseBox(BaseModel):
l: float=Field(...)
t: float=Field(...)
r: float=Field(...)
b: float=Field(...)

class BaseInput(BaseModel):
boxes: List[BaseBox] = Field(...)
words: List[str] = Field(...)
width: Optional[float] = Field(...)
height: Optional[float] = Field(...)

@app.post("/submit")
def submit(
base_input: BaseInput = Depends(),
file: UploadFile = File(...),  # Add this line to accept a file
):

return {
"JSON Payload": base_input,
"Filename": file.filename,
}

@app.get("/")
def main(request: Request):
return {"status":"alive"}
но почему-то я не могу заставить его работать. Я использую интерактивную документацию API, но всегда получаю сообщение об ошибке. Думаете, мне придется вместо этого отправить 2 файла?
Я тоже пробовал

Код: Выделить всё

curl -X 'POST' \
'http://localhost:8007/submit?width=10&height=10' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@test.png;type=image/png' \
-F 'boxes={
"l": 0,
"t": 0,
"r": 0,
"b": 0
}' \
-F 'words=test,test2,tes3,test'
но я всегда получаю сообщение об ошибке

Код: Выделить всё

"POST /submit?width=10&height=10 HTTP/1.1" 422 Unprocessable Entity
.

Подробнее здесь: https://stackoverflow.com/questions/776 ... asemodel-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»