РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
191 of 307 menu

Тип HttpUrl

Тип HttpUrl применяется в моделях Pydantic для валидации строковых полей как HTTP- или HTTPS-ссылок. Он принимает строку и проверяет, что она начинается со схемы http:// или https://, содержит хост и не содержит лишних символов. При успешной валидации значение преобразуется в объект Url, у которого есть атрибуты scheme, host, path, query и другие. Тип импортируется из модуля pydantic.

Синтаксис

from pydantic import HttpUrl class Model(BaseModel): field: HttpUrl

Пример

Давайте создадим модель с полем типа HttpUrl и передадим корректную ссылку:

from fastapi import FastAPI from pydantic import BaseModel, HttpUrl app = FastAPI() class Site(BaseModel): url: HttpUrl @app.post('/site') def create_site(site: Site): return { 'url': str(site.url), 'host': site.url.host, 'scheme': site.url.scheme, }

Результат выполнения кода для тела запроса {"url": "https://code.mu/article"}:

{"url": "https://code.mu/article", "host": "code.mu", "scheme": "https"}

Пример

Давайте попробуем передать некорректную строку и посмотрим, какую ошибку вернёт FastAPI:

from fastapi import FastAPI from pydantic import BaseModel, HttpUrl app = FastAPI() class Site(BaseModel): url: HttpUrl @app.post('/site') def create_site(site: Site): return {'url': str(site.url)}

Результат выполнения кода для тела запроса {"url": "abcde"}:

{ "detail": [ { "type": "url_parsing", "loc": ["body", "url"], "msg": "Input should be a valid URL, relative URL without a base", "input": "abcde" } ] }

Пример

Давайте создадим модель напрямую и получим доступ к отдельным частям URL через атрибуты объекта Url:

from pydantic import BaseModel, HttpUrl class Site(BaseModel): url: HttpUrl site = Site(url='https://code.mu/article?page=1') print(site.url.scheme) print(site.url.host) print(site.url.path) print(site.url.query)

Результат выполнения кода:

https code.mu /article page=1

Смотрите также

  • тип AnyHttpUrl,
    который также валидирует HTTP-ссылки, но без приведения к объекту Url
  • тип EmailStr,
    который проверяет корректность email-адреса
  • класс BaseModel,
    который является базой для всех моделей Pydantic
  • функция field_validator,
    которая позволяет писать собственные проверки полей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить