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