Параметр pattern
Параметр pattern применяется к объявлению
параметра пути, запроса, заголовка или cookie.
Он принимает строку с регулярным выражением
и проверяет, что пришедшее значение полностью
ей соответствует. Если значение не подходит,
FastAPI возвращает ошибку валидации 422.
Параметр pattern работает для строковых
значений и чаще всего используется вместе
с Query, Path, Header и Cookie.
Регулярное выражение задаётся по правилам
модуля re и проверяется через re.match,
то есть значение должно совпадать целиком.
Синтаксис
Query(pattern='регулярное_выражение')
Path(pattern='регулярное_выражение')
Пример
Давайте потребуем, чтобы параметр запроса name
состоял только из латинских букв:
from fastapi import FastAPI, Query
app = FastAPI()
@app.get('/user')
def user(name: str = Query(pattern='^[a-zA-Z]+$')):
return {'name': name}
Результат выполнения кода для адреса /user?name=abcde:
{"name": "abcde"}
Результат выполнения кода для адреса /user?name=abc123:
{"detail": [{"type": "string_pattern_mismatch", "loc": ["query", "name"], "msg": "String should match pattern '^[a-zA-Z]+$'", "input": "abc123"}]}
Пример
Давайте проверим, что идентификатор пользователя в пути состоит ровно из пяти цифр:
from fastapi import FastAPI, Path
app = FastAPI()
@app.get('/user/{user_id}')
def user(user_id: str = Path(pattern='^[0-9]{5}$')):
return {'user_id': user_id}
Результат выполнения кода для адреса /user/12345:
{"user_id": "12345"}
Результат выполнения кода для адреса /user/123:
{"detail": [{"type": "string_pattern_mismatch", "loc": ["path", "user_id"], "msg": "String should match pattern '^[0-9]{5}$'", "input": "123"}]}
Пример
Давайте зададим шаблон для заголовка token,
который должен начинаться с 'Bearer ':
from fastapi import FastAPI, Header
app = FastAPI()
@app.get('/data')
def data(token: str = Header(pattern='^Bearer .+$')):
return {'token': token}
Результат выполнения кода для заголовка Bearer abcde:
{"token": "Bearer abcde"}
Смотрите также
-
параметр
min_length,
который задаёт минимальную длину строки -
параметр
max_length,
который задаёт максимальную длину строки -
функция
Query,
которая объявляет параметр запроса -
функция
Path,
которая объявляет параметр пути