Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
  • Оглавление
  • Начало работы
    • Обзор
    • Создание базы данных
    • Аутентификация
    • Интерфейс командной строки YDB CLI
    • Язык запросов YQL
    • YDB SDK
    • Самостоятельное развертывание
      • Обзор
      • Docker
      • Бинарный файл
      • Minikube
    • Полезные ссылки
    • Document API, совместимый с Amazon DynamoDB
      • Настройка инструментов AWS
      • Работа с данными через HTTP-интерфейс
      • Работа с AWS CLI
        • Обзор
        • Создание таблицы
        • Добавление данных в таблицу
        • Чтение данных из таблицы
        • Обновление данных
        • Выборка данных
        • Удаление созданных ресурсов
      • Работа с AWS SDK
        • Обзор
        • Создание таблицы
        • Загрузка данных в таблицу
        • Управление записями в таблице
          • Создание записи
          • Чтение записи
          • Обновление записи
          • Удаление записи
        • Поиск и извлечение данных
        • Удаление таблицы
  • Практические руководства
    • Развертывание веб-приложения
    • Разработка Slack-бота
    • Подключение к YDB из функции Yandex Cloud Functions на Python
    • Подключение к базе данных YDB из функции Yandex Cloud Functions на Node.js
    • Конвертация видео в GIF на Python
    • Разработка навыка Алисы и сайта с авторизацией
  • Концепции
    • Обзор
    • Термины и определения
    • Соединение с БД и аутентификация
    • Модель данных и схема
    • Режимы работы Serverless и Dedicated
    • Транзакции
    • Вторичные индексы
    • Time to Live (TTL)
    • Скан запросы
    • Ограничения базы данных
    • Кластер YDB
      • Обзор
      • Общая схема YDB
      • Дисковая подсистема кластера
    • Квоты и лимиты
  • Пошаговые инструкции
    • Обзор
    • Переименование
    • Использование плана запроса и AST
    • Чтение и запись данных
    • Работа со вторичными индексами
  • Рекомендации
    • Обзор
    • Выбор первичного ключа для максимальной производительности
    • Вторичные индексы
    • Постраничный вывод
    • Загрузка больших объемов данных
    • Использование таймаутов
  • Управление базами данных
    • Обзор
    • Облачная консоль управления
      • Обзор
      • Создание, изменение, удаление баз данных
      • Таблицы и директории
      • Управление доступом
    • Интерфейс командной строки YC CLI
    • Резервное копирование и восстановление
    • Диагностика
      • Обзор
      • Системные таблицы
      • Мониторинг
  • Правила тарификации
    • Обзор
    • Бессерверный режим
      • Правила тарификации для бессерверного режима
      • Стоимость запроса для YQL
      • Стоимость запроса для Document API
      • Стоимость запроса для специальных API
    • Режим с выделенными инстансами
  • HTTP API, совместимый с Amazon DynamoDB
    • Все методы
    • Actions
      • BatchGetItem
      • BatchWriteItem
      • CreateTable
      • DeleteItem
      • DeleteTable
      • DescribeTable
      • DescribeTimeToLive
      • GetItem
      • ListTables
      • PutItem
      • Query
      • Scan
      • TransactGetItems
      • TransactWriteItems
      • UpdateItem
      • UpdateTimeToLive
    • Общие ошибки
  • YQL
    • Обзор
    • Типы данных
      • Обзор
      • Простые
      • Опциональные
      • Контейнеры
      • Специальные
      • Преобразования типов
      • Текстовое представление типов данных
      • JSON
    • Синтаксис
      • Обзор
      • Лексическая структура
      • Выражения
      • ACTION
      • ALTER TABLE
      • CREATE TABLE
      • DECLARE
      • DELETE
      • DISCARD
      • DROP TABLE
      • GROUP BY
      • FLATTEN
      • INSERT
      • INTO RESULT
      • JOIN
      • PRAGMA
      • REPLACE
      • SELECT
      • UPDATE
      • UPSERT
      • VALUES
      • WINDOW
      • Неподдерживаемые конструкции
    • Встроенные функции
      • Обзор
      • Базовые
      • Агрегатные
      • Оконные
      • Для работы со списками
      • Для работы со словарями
      • Для работы со структурами
      • Для работы с типами
      • Для работы с JSON
      • Библиотеки C++
        • Обзор
        • Hyperscan
        • Pcre
        • Pire
        • Re2
        • String
        • Unicode
        • DateTime
        • Url
        • Ip
        • Yson
        • Digest
        • Math
        • Histogram
    • Туториал YQL
      • Обзор
      • Создание таблицы
      • Добавление данных в таблицу
      • Выборка данных из всех колонок
      • Выборка данных из определенных колонок
      • Сортировка и фильтрация
      • Агрегирование данных
      • Дополнительные условия выборки
      • Объединение таблиц с помощью JOIN
      • Вставка и модификация данных с помощью REPLACE
      • Вставка и модификация данных с помощью UPSERT
      • Вставка данных с помощью INSERT
      • Обновление данных с помощью UPDATE
      • Удаление данных
      • Добавление и удаление колонок
      • Удаление таблицы
  • Работа с YDB CLI
    • Обзор
    • Установка
    • Структура команд YDB CLI
    • Сервисные команды
    • Соединение с БД и аутентификация
    • Глобальные параметры
    • Работа со схемой БД
      • Список объектов
      • Информация об объекте
      • Директории
      • Вторичные индексы
      • Переименование таблиц
    • Работа с данными
      • Выполнение запроса к данным
      • План исполнения запроса
      • Потоковое чтение таблицы
      • Скан запросы
    • Загрузка и выгрузка данных
      • Обзор
      • Файловая структура выгрузки
      • Выгрузка в файловую систему
      • Загрузка из файловой системы
      • Соединение и аутентификация с S3
      • Выгрузка в S3
      • Загрузка из S3
      • Импорт данных из файла в существующую таблицу
    • Управление профилями
      • Обзор
      • Создание профиля
      • Использование профиля в запросах
      • Получение информации о профиле
      • Удаление профиля
      • Активированный профиль
    • Информационные сервисы
      • Список эндпоинтов
      • Проверка аутентификации
    • Нагрузочное тестирование
      • Обзор
      • Stock нагрузка
  • Работа с YDB SDK
    • Обзор
    • Установка
    • Аутентификация
    • Тестовое приложение
      • Обзор
      • C++
      • C# (.NET)
      • Go
      • Java
      • Node.js
      • PHP
      • Python
      • Архив
        • Go v1
        • Go v2
    • Обработка ошибок в API
    • Рецепты кода
      • Обзор
      • Аутентификация
        • Обзор
        • С помощью токена
        • Анонимная
        • Файл сервисного аккаунта
        • Сервис метаданных
        • С помощью переменных окружения
        • С помощью логина и пароля
      • Балансировка
        • Обзор
        • Равномерный случайный выбор
        • Предпочитать ближайший дата-центр
        • Предпочитать зону доступности
      • Выполнение повторных запросов
      • Диагностика проблем
        • Обзор
        • Включить логирование
        • Подключить метрики в Prometheus
        • Подключить трассировку в Jaeger
      • Установить размер пула сессий
      • Вставка данных
      • Пакетная вставка данных
  • Управление кластером
    • Обзор
    • Kubernetes
      • Обзор
      • Развертывание в Yandex Managed Service for Kubernetes
      • Развертывание в AWS Elastic Kubernetes Service
      • Эксплуатация
    • Вручную
      • Локальная установка
      • Конфигурация кластера
      • Обслуживание дисковой подсистемы кластера
        • Обзор
        • Способы предотвращения выхода за модель отказа
        • Балансировка нагрузки на диски
        • Способы освобождения места на физических устройствах
        • Расширение кластера
        • Добавление групп хранения
        • Безопасные рестарт и выключение узлов
        • Включение/выключение SelfHeal
        • Включение/выключение Scrubbing
        • Перевоз VDisk'ов
        • Изменение конфигураций через CMS
        • Изменение конфигурации акторсистемы
    • Встроенный UI
      • Обзор
      • YDB Monitoring
      • Hive web-viewer
      • Обзор соединений
      • Логи
      • Графики
    • Системные таблицы
  • Вопросы и ответы
    • Обзор
    • Общие вопросы
    • Ошибки
    • YQL
    • Serverless
    • Все вопросы на одной странице
  • Публичные материалы
  1. YQL
  2. Встроенные функции
  3. Библиотеки C++
  4. Url

Url

Статья создана
Yandex.Cloud
  • Normalize
  • NormalizeWithDefaultHttpScheme
  • Encode / Decode
  • Parse
  • Get...
  • Cut...
  • ...Punycode...
  • ...Query...

Normalize

  • Url::Normalize(String) -> String?

Нормализует URL удобным для Web-роботов образом: приводит hostname в нижний регистр, выкидывает фрагмент и т.п.
Результат нормализации зависит только от самого URL. В процессе нормализации НЕ выполняются операции, зависящие от внешних данных: приведение по дублям, зеркалам и т.п.

Возвращаемое значение:

  • нормализованный URL;
  • NULL, если переданный строковый аргумент не удалось распарсить как URL.

Примеры

SELECT Url::Normalize("hTTp://wWw.yDb.TECH/"); -- "http://www.ydb.tech/"
SELECT Url::Normalize("http://ydb.tech#foo");      -- "http://ydb.tech/"

NormalizeWithDefaultHttpScheme

  • Url::NormalizeWithDefaultHttpScheme(String?) -> String?

Выполняет нормализацию аналогично Url::Normalize, но подставляет схему http:// в случае, если схемы нет.

Возвращаемое значение:

  • нормализованный URL;
  • исходный URL, если нормализация не удалась.

Примеры

SELECT Url::NormalizeWithDefaultHttpScheme("wWw.yDb.TECH");    -- "http://www.ydb.tech/"
SELECT Url::NormalizeWithDefaultHttpScheme("http://ydb.tech#foo"); -- "http://ydb.tech/"

Encode / Decode

Кодируют UTF-8 строку в urlencoded формат (Url::Encode) и обратно (Url::Decode).

Список функций

  • Url::Encode(String?) -> String?
  • Url::Decode(String?) -> String?

Примеры

SELECT Url::Decode("http://ydb.tech/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"); 
  -- "http://ydb.tech/страница"
SELECT Url::Encode("http://ydb.tech/страница");                                         
  -- "http://ydb.tech/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0"

Parse

Разбирает URL на составные части.

  • Url::Parse(Parse{Flags:AutoMap}) -> Struct< Frag: String?, Host: String?, ParseError: String?, Pass: String?, Path: String?, Port: String?, Query: String?, Scheme: String?, User: String? >

Примеры

SELECT Url::Parse(
  "https://en.wikipedia.org/wiki/Isambard_Kingdom_Brunel?s=24&g=h-24#Great_Western_Railway");
/*
(
  "Frag": "Great_Western_Railway",
  "Host": "en.wikipedia.org",
  "ParseError": null,
  "Pass": null,
  "Path": "/wiki/Isambard_Kingdom_Brunel",
  "Port": null,
  "Query": "s=24&g=h-24",
  "Scheme": "https",
  "User": null
)
*/

Get...

Получение компонента URL.

Список функций

  • Url::GetScheme(String{Flags:AutoMap}) -> String

  • Url::GetHost(String?) -> String?

  • Url::GetHostPort(String?) -> String?

  • Url::GetSchemeHost(String?) -> String?

  • Url::GetSchemeHostPort(String?) -> String?

  • Url::GetPort(String?) -> String?

  • Url::GetTail(String?) -> String? -- всё после хоста: path + query + fragment

  • Url::GetPath(String?) -> String?

  • Url::GetFragment(String?) -> String?

  • Url::GetCGIParam(String?, String) -> String? -- второй параметр — имя нужного CGI параметра

  • Url::GetDomain(String?, Uint8) -> String? -- второй параметр — необходимый уровень домена

  • Url::GetTLD(String{Flags:AutoMap}) -> String

  • Url::IsKnownTLD(String{Flags:AutoMap}) -> Bool -- зарегистрирован на http://www.iana.org/

  • Url::IsWellKnownTLD(String{Flags:AutoMap}) -> Bool -- находится в небольшом whitelist из com, net, org, ru и пр.

  • Url::GetDomainLevel(String{Flags:AutoMap}) -> Uint64

  • Url::GetSignificantDomain(String{Flags:AutoMap}, [List<String>?]) -> String
    Возвращает домен второго уровня в большинстве случаев и домен третьего уровня для хостеймов вида: ***.XXX.YY, где XXX — одно из com, net, org, co, gov, edu. Этот список можно переопределить через опциональный второй аргумент

  • Url::GetOwner(String{Flags:AutoMap}) -> String
    Возвращает домен, которым с наибольшей вероятностью владеет отдельный человек или организация. В отличие от Url::GetSignificantDomain работает по специальному разрешительному списку, и помимо доменов из серии ***.co.uk возвращает домен третьего уровня для, например, бесплатных хостингов и блогов, например something.livejournal.com

Примеры

SELECT Url::GetScheme("https://ydb.tech");           -- "https://"
SELECT Url::GetDomain("http://www.ydb.tech", 2); -- "ydb.tech"

Cut...

  • Url::CutScheme(String?) -> String?
    Возвращает переданный URL уже без схемы (http://, https:// и т.п.).

  • Url::CutWWW(String?) -> String?
    Возвращает переданный домен без префикса "www.", если он присутствовал.

  • Url::CutWWW2(String?) -> String?
    Возвращает переданный домен без префикса "www.", "www2.", "wwww777." и тому подобных, если он присутствовал.

  • Url::CutQueryStringA­ndFragment(String{Flags:AutoMap}) -> String
    Возращает копию переданного URL с удаленными всеми CGI параметрами и фрагментами ("?foo=bar" и/или "#baz").

Примеры

SELECT Url::CutScheme("http://www.ydb.tech"); -- "www.ydb.tech"
SELECT Url::CutWWW("www.ydb.tech");           -- "ydb.tech"

...Punycode...

Преобразования Punycode.

Список функций

  • Url::HostNameToPunycode(String{Flag:AutoMap}) -> String?
  • Url::ForceHostNameToPunycode(String{Flag:AutoMap}) -> String
  • Url::PunycodeToHostName(String{Flag:AutoMap}) -> String?
  • Url::ForcePunycodeToHostName(String{Flag:AutoMap}) -> String
  • Url::CanBePunycodeHostName(String{Flag:AutoMap}) -> Bool

Примеры

SELECT Url::PunycodeToHostName("xn--80aniges7g.xn--j1aef"); -- "экзампл.ком"

...Query...

Преобразования Query.

Список функций

Url::QueryStringToList(String{Flag:AutoMap}, [
  KeepBlankValues:Bool?,  -- пустые значения в percent-encoded запросах интерпретируются как пустыe строки; по умолчанию false
  Strict:Bool?,           -- если false - ошибки парсинга игнорируются, ошибочные поля пропускаются; по умолчанию true
  MaxFields:Uint32?,      -- максимальное количество полей, при превышении кидается исключение; по умолчанию Max<Uint32>
  Separator:String?       -- разделитель пар ключ-значение; по умолчанию '&'
]) -> List<Tuple<String, String>>
Url::QueryStringToDict(String{Flag:AutoMap}, [
  KeepBlankValues:Bool?,  -- пустые значения в percent-encoded запросах интерпретируются как пустыe строки; по умолчанию false
  Strict:Bool?,           -- если false - ошибки парсинга игнорируются, ошибочные поля пропускаются; по умолчанию true
  MaxFields:Uint32?,      -- максимальное количество полей, при превышении кидается исключение; по умолчанию Max<Uint32>
  Separator:String?       -- разделитель пар ключ-значение; по умолчанию '&'
]) -> Dict<String, List<String>>
Url::BuildQueryString(Dict<String, List<String?>>{Flag:AutoMap}, [
  Separator:String?       -- разделитель пар ключ-значение; по умолчанию '&'
]) -> String
Url::BuildQueryString(Dict<String, String?>{Flag:AutoMap}, [
  Separator:String?       -- разделитель пар ключ-значение; по умолчанию '&'
]) -> String
Url::BuildQueryString(List<Tuple<String, String?>>{Flag:AutoMap}, [
  Separator:String?       -- разделитель пар ключ-значение; по умолчанию '&'
]) -> String

Примеры

SELECT Url::QueryStringToList("a=1&b=2&a=3");                       -- [("a", "1"), ("b", "2"), ("a", "3")]
SELECT Url::QueryStringToDict("a=1&b=2&a=3");                       -- {"b" : ["2"], "a" : ["1", "3"]}
SELECT Url::BuildQueryString([("a", "1"), ("a", "3"), ("b", "2")]); -- "a=1&a=3&b=2"
SELECT Url::BuildQueryString({"a" : "1", "b" : "2"});               -- "b=2&a=1"
SELECT Url::BuildQueryString({"a" : ["1", "3"], "b" : ["2", "4"]}); -- "b=2&b=4&a=1&a=3"

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Normalize
  • NormalizeWithDefaultHttpScheme
  • Encode / Decode
  • Parse
  • Get...
  • Cut...
  • ...Punycode...
  • ...Query...