Параметр le
Параметр le применяется в функциях
Path, Query, Body и других
для ограничения числового значения сверху.
Он указывает, что число должно быть
меньше или равно заданной границе.
Если клиент передаст значение больше,
FastAPI вернёт ошибку валидации 422.
Синтаксис
from fastapi import Path, Query, Body
le=value
Пример
Давайте ограничим параметр пути age
значением не больше 100:
from fastapi import FastAPI, Path
app = FastAPI()
@app.get('/user/{age}')
def user(age: int = Path(le=100)):
return {'age': age}
Результат выполнения кода для адреса /user/50:
{"age": 50}
Если же передать значение больше границы,
например /user/150, FastAPI вернёт ошибку:
{"detail": [{"type": "less_than_equal", "loc": ["path", "age"], "msg": "Input should be less than or equal to 100", "input": 150, "ctx": {"le": 100}}]}
Пример
Давайте применим le вместе с ge,
чтобы задать диапазон для query-параметра price:
from fastapi import FastAPI, Query
app = FastAPI()
@app.get('/items/')
def items(price: int = Query(ge=100, le=1000)):
return {'price': price}
Результат выполнения кода для адреса /items/?price=500:
{"price": 500}
Если передать /items/?price=2000,
валидация не пройдёт:
{"detail": [{"type": "less_than_equal", "loc": ["query", "price"], "msg": "Input should be less than or equal to 1000", "input": 2000, "ctx": {"le": 1000}}]}
Пример
Давайте применим le к полю модели
Pydantic через Body:
Результат выполнения кода для тела запроса
{"quantity": 5}:
{"quantity": 5}
Если передать {"quantity": 20},
FastAPI вернёт ошибку валидации:
{"detail": [{"type": "less_than_equal", "loc": ["body", "quantity"], "msg": "Input should be less than or equal to 10", "input": 20, "ctx": {"le": 10}}]}