Параметр min_length
Параметр min_length применяется в функциях
Path, Query, Header, Cookie,
Body, Form и в полях моделей Pydantic.
Он указывает минимально допустимое количество символов
в строковом значении. Если клиент передаёт строку короче
заданного значения, FastAPI возвращает ошибку 422.
Первым параметром, как правило, передаётся значение
по умолчанию, а min_length задаётся именованным
аргументом.
Синтаксис
from fastapi import Query
Query(default, min_length=1)
Для моделей Pydantic параметр указывается в
функции Field:
from pydantic import BaseModel, Field
class Model(BaseModel):
name: str = Field(min_length=1)
Пример
Давайте потребуем, чтобы параметр пути содержал минимум 3 символа:
from fastapi import FastAPI, Path
app = FastAPI()
@app.get('/user/{name}')
def user(name: str = Path(min_length=3)):
return {'name': name}
Результат выполнения кода для адреса /user/abcde:
{"name": "abcde"}
Результат выполнения кода для адреса /user/ab:
{
"detail": [
{
"type": "string_too_short",
"loc": ["path", "name"],
"msg": "String should have at least 3 characters",
"input": "ab",
"ctx": {"min_length": 3}
}
]
}
Пример
Давайте применим min_length к query-параметру:
from fastapi import FastAPI, Query
app = FastAPI()
@app.get('/search')
def search(q: str = Query(min_length=5)):
return {'q': q}
Результат выполнения кода для адреса /search?q=article:
{"q": "article"}
Результат выполнения кода для адреса /search?q=abc:
{
"detail": [
{
"type": "string_too_short",
"loc": ["query", "q"],
"msg": "String should have at least 5 characters",
"input": "abc",
"ctx": {"min_length": 5}
}
]
}
Пример
Давайте применим min_length в модели Pydantic
для поля тела запроса:
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class User(BaseModel):
name: str = Field(min_length=3)
login: str = Field(min_length=5)
@app.post('/user')
def create_user(user: User):
return user
Результат выполнения кода для тела
{"name": "abcde", "login": "article"}:
{"name": "abcde", "login": "article"}
Результат выполнения кода для тела
{"name": "ab", "login": "usr"}:
{
"detail": [
{
"type": "string_too_short",
"loc": ["body", "name"],
"msg": "String should have at least 3 characters",
"input": "ab",
"ctx": {"min_length": 3}
},
{
"type": "string_too_short",
"loc": ["body", "login"],
"msg": "String should have at least 5 characters",
"input": "usr",
"ctx": {"min_length": 5}
}
]
}
Смотрите также
-
параметр
max_length,
который задаёт максимальную длину строки -
параметр
pattern,
который задаёт регулярное выражение для строки -
параметр
default,
который задаёт значение по умолчанию -
параметр
description,
который добавляет описание параметра в документацию