РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
41 of 307 menu

Параметр response_model

Параметр response_model передаётся в декораторы маршрутов get, post, put, patch, delete и другие методы приложения FastAPI. Он принимает класс Pydantic-модели или список моделей. FastAPI использует эту модель для валидации, фильтрации лишних полей и генерации схемы OpenAPI. Если обработчик вернёт данные, не соответствующие модели, FastAPI выбросит ошибку валидации.

Синтаксис

@app.get(path, response_model=Model)

Пример

Давайте объявим модель User и укажем её в параметре response_model:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str age: int @app.get('/user', response_model=User) def get_user(): return {'name': 'abcde', 'age': 25}

Результат выполнения кода для адреса /user:

{"name": "abcde", "age": 25}

Пример

Параметр response_model отфильтровывает лишние поля. Вернём словарь с дополнительным ключом password:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str age: int @app.get('/user', response_model=User) def get_user(): return {'name': 'abcde', 'age': 25, 'password': 'secret'}

Результат выполнения кода для адреса /user:

{"name": "abcde", "age": 25}

Ключ password не попал в ответ, потому что его нет в модели User.

Пример

Давайте укажем список моделей через list[User]:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str age: int @app.get('/users', response_model=list[User]) def get_users(): return [ {'name': 'abcde', 'age': 25}, {'name': 'user', 'age': 30}, ]

Результат выполнения кода для адреса /users:

[{"name": "abcde", "age": 25}, {"name": "user", "age": 30}]

Смотрите также

  • метод get,
    который вешает обработчик на GET-запрос
  • параметр response_class,
    который задаёт класс ответа вместо JSON
  • параметр responses,
    который описывает дополнительные ответы в схеме OpenAPI
  • параметр status_code,
    который задаёт HTTP-код ответа по умолчанию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить