Схемы FastAPI для запросов GET с использованием PydanticPython

Программы на Python
Ответить
Anonymous
 Схемы FastAPI для запросов GET с использованием Pydantic

Сообщение Anonymous »

Введение:
В FastAPI, когда входные данные POST-запроса представляют собой модель Pydantic (как в этом примере), автоматические документы, сгенерированные Fastapi, содержат схему этого объекта ($ ref) (как показано здесь).
Вопрос:
Хотя входные данные запроса GET не могут быть моделью Pydantic (поскольку объекты Pydantic должны быть отправленным внутрь тела раздел запроса, а запросы get не имеют тела – ссылки.
В1. Можно ли использовать модель Pydantic для автоматически создаваемых документов?
Изменить – Да: ответ находится в ответе Криса здесь
Вопрос 2. Можно ли сделать это с вложенными объектами Pydantic (чтобы сгладить поля) Что-то вроде этого:< /p>

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

class AnotherBase(BaseModel):
c: str
d: str

class MyBase(BaseModel):
a: str = Query()
b: AnotherBase = Query()

@router.get("/myget")
def my_func(arg: MyBase = Depends()) -> MyBase:
return MyBase(a="1", b="2")
Что я пробовал:
  • Чтобы использовать модель pydantic в качестве входных данных запроса на получение - в результате это невозможно, поскольку запросы get не имеют тела
  • Я пробовал следить за этой веткой, но все же использовал Depends< /code>, некоторые входные параметры необходимо отправлять внутри тела — поэтому я получаю эту ошибку от FastAPI «Ошибка типа: не удалось выполнить «выборку» в «Окне»: запрос с методом GET/HEAD не может иметь тело».
  • Я пробовал следуя ответу Криса, но внутренний объект (

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

    b: AnotherBase
    ) по какой-то причине находится в разделе body (которого не существует)


Подробнее здесь: https://stackoverflow.com/questions/757 ... g-pydantic
Ответить

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

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

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

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

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