Параметр lt
Параметр lt применяется в функциях Path, Query, Body, Header, Cookie и Form.
Он задаёт верхнюю границу для числового значения: принимаемое значение должно быть строго меньше числа, переданного в lt.
Если значение больше или равно границе, FastAPI возвращает ошибку валидации 422.
Параметр работает совместно с типами int и float.
Синтаксис
from fastapi import FastAPI, Path, Query
app = FastAPI()
@app.get('/items/{item_id}')
def read_item(item_id: int = Path(lt=100)):
return {'item_id': item_id}
Пример
Давайте примем число из пути и ограничим его сверху значением 100:
from fastapi import FastAPI, Path
app = FastAPI()
@app.get('/items/{item_id}')
def read_item(item_id: int = Path(lt=100)):
return {'item_id': item_id}
Результат выполнения кода для адреса /items/50:
{"item_id": 50}
Результат выполнения кода для адреса /items/100:
{"detail": [{"type": "less_than", "loc": ["path", "item_id"], "msg": "Input should be less than 100", "input": 100, "ctx": {"lt": 100}}]}
Пример
Давайте ограничим значение query-параметра price числом 1000:
Результат выполнения кода для адреса /products?price=999.99:
{"price": 999.99}
Результат выполнения кода для адреса /products?price=1000:
{"detail": [{"type": "less_than", "loc": ["query", "price"], "msg": "Input should be less than 1000", "input": 1000, "ctx": {"lt": 1000}}]}
Пример
Давайте ограничим поле модели Pydantic с помощью lt:
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
name: str
quantity: int = Field(lt=10)
@app.post('/items')
def create_item(item: Item):
return item
Результат выполнения кода для тела запроса {"name": "abcde", "quantity": 5}:
{"name": "abcde", "quantity": 5}
Результат выполнения кода для тела запроса {"name": "abcde", "quantity": 10}:
{"detail": [{"type": "less_than", "loc": ["body", "quantity"], "msg": "Input should be less than 10", "input": 10, "ctx": {"lt": 10}}]}