Получите JSON из FastAPI, используя вложенные модели PydanticPython

Программы на Python
Anonymous
Получите JSON из FastAPI, используя вложенные модели Pydantic

Сообщение Anonymous »

Следующий код получает некоторый JSON, отправленный POST на сервер FastAPI. FastAPI делает его доступным внутри функции в виде модели Pydantic. Мой пример кода обрабатывает его, записывая файл. Что мне не нравится (и это, кажется, побочный эффект использования Pydantic List), так это то, что мне приходится возвращаться назад, чтобы получить какой-нибудь пригодный для использования JSON.
Как я могу это сделать без цикла?
Я думаю, что это возможно, потому что возврат изображений просто работает.

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

from typing import List

from fastapi import FastAPI
from pydantic import BaseModel
import json

app = FastAPI()

class Image(BaseModel):
url: str
name: str

@app.post("/images/multiple/")
async def create_multiple_images(images: List[Image]):
#return images             # returns json string
#print(images)             # prints an Image object
#print(images.json())      # AttributeError: 'list' object has no attribute 'json'
#print(json.dumps(images)) # TypeError: Object of type Image is not JSON serializable
img_data = list()          # does it really have to be this way?
for i in images:
img_data.append(i.dict())
with open('./images.json', 'w') as f:
json.dump(img_data, f, indent=2)

'''
curl -v -d '[{"name":"wilma","url":"http://this.com"},{"name":"barney","url":"http://that.com"}]' http://localhost:8000/images/multiple/
'''
Пример расширен из документации FastAPI

Подробнее здесь: https://stackoverflow.com/questions/649 ... ted-models

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