Ограничение параметров пути с помощью Enum

Иногда нужно дать возможность выбирать в качестве параметра пути только определенные значения. То есть пользователь может в качестве параметра задать только те значения, которые мы зададим. Другие значения должны отклоняться.

Для этого можно воспользоваться enum, который встроен в Python. Соответственно создаем какой-то enum, который называется, например, model. Давайте назовем его даже model_types - типы данных, типы возможных вариантов, которые могут быть применены для этого роута.

У нас есть route.test, у него есть type. Для type мы пишем, что его возможное значение model_types с определенным набором значений, которые мы можем указывать.

Результат использования Enum в FastAPI

Что произойдет в нашем FastAPI, если мы посмотрим теперь этот endpoint? Как вы видите, теперь нельзя указать произвольное значение для type. Его можно только выбрать из предложенных вариантов.

Если пользователь каким-то образом передаст туда другое значение, то соответственно сработает ошибка валидации. Другое значение он передать внутрь функции не сможет. Вот такая полезная функция в FastAPI.