Методы работы с унифицированными идентификаторами ресурсов (URI) и примеры кода

Унифицированный идентификатор ресурса (URI) — это строка символов, которая идентифицирует уникальный ресурс в Интернете. Его можно использовать для поиска и извлечения таких ресурсов, как веб-страницы, изображения, видео и многое другое. Вот несколько методов, обычно используемых с URI, а также примеры кода:

  1. Разбор URI.
    Во многих языках программирования вы можете разобрать URI на его компоненты, такие как схема, хост, путь, параметры запроса и т. д. Например, в Python:

    import urllib.parse
    uri = "https://www.example.com/search?q=uri+example"
    parsed_uri = urllib.parse.urlparse(uri)
    print("Scheme:", parsed_uri.scheme)
    print("Host:", parsed_uri.netloc)
    print("Path:", parsed_uri.path)
    print("Query Parameters:", urllib.parse.parse_qs(parsed_uri.query))
  2. Создание URI.
    Вы можете создать URI, объединив его компоненты с использованием правильной кодировки. Например, снова в Python:

    import urllib.parse
    scheme = "https"
    host = "www.example.com"
    path = "/search"
    query_params = {"q": "uri example"}
    uri = urllib.parse.urlunparse((scheme, host, path, '', urllib.parse.urlencode(query_params), ''))
    print("Constructed URI:", uri)
  3. Кодирование URL-адресов.
    При работе с URI важно правильно кодировать специальные символы, чтобы гарантировать их правильную интерпретацию браузерами и серверами. В JavaScript вы можете использовать функцию encodeURIComponent:

    const uri = "https://www.example.com/search?q=" + encodeURIComponent("uri example");
    console.log("Encoded URI:", uri);
  4. Декодирование URL-адреса.
    И наоборот, если у вас есть URI с закодированными компонентами, вы можете декодировать его, чтобы получить исходные значения. В Java вы можете использовать класс java.net.URLDecoder:

    import java.net.URLDecoder;
    String uri = "https://www.example.com/search?q=uri%20example";
    String decodedQuery = URLDecoder.decode(uri, "UTF-8");
    System.out.println("Decoded Query:", decodedQuery);