Приветствую,
Какой способ правильнее использовать ?
Вариант №1
@app.get("/portal1", response_model=MyModel)
async def get_portal1() -> Any:
result = {"name1": "name", "age": 10}
return result
или
Вариант №2
@app.get("/portal2")
async def get_portal2() -> MyModel:
result = {"name1": "name", "age": 10}
return MyModel(**result)
Документация пестрит примерами с
response_model
ИИ говорит что
return type правильнее
Из того что заметил - Вариант №1 с
response_model выдает более читаемую информацию по ошибке в случае возникновения таковой
...
fastapi.exceptions.ResponseValidationError: 1 validation error:
{'type': 'missing', 'loc': ('response', 'name'), 'msg': 'Field required', 'input': {'name1': 'name', 'age': 10}}
File ".../main.py", line 13, in get_portal1
GET /portal1
Для Варианта №2 не сразу и понятно где искать
...
pydantic_core._pydantic_core.ValidationError: 1 validation error for MyModel
name
Field required [type=missing, input_value={'name1': 'name', 'age': 10}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing