Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

URL-адреса (унифицированные указатели ресурсов) являются одним из наиболее важных элементов инфраструктуры Интернета. При создании веб-приложений вам потребуется манипулировать URL-адресами для поиска и извлечения ресурсов.

При создании более сложных веб-приложений вам потребуется работать с URL-адресами на более детальном уровне. Вам может потребоваться определить схему, имя хоста, путь и параметры запроса. Вам также необходимо знать, как кодировать и декодировать URL-адреса, чтобы вы могли обрабатывать специальные символы и обеспечивать безопасность своего веб-приложения.

Стандартная библиотека Go предоставляет пакет net/url для обработки URL-адресов и их компонентов.

Пакет URL

URL пакет предоставляет комплексные функции и возможности для работы с URL-адреса и их отдельные части. Он предоставляет функции для анализа, построения, кодирования и декодирования URL-адресов, что делает пакет полезным для веб-разработки.

instagram viewer

Некоторые из ключевых особенностей URL package — это возможность разбирать URL-адреса на отдельные компоненты для манипулирования и создания URL-адресов для HTTP-запросов. URL пакет также предоставляет URL-адрес структура с Разобрать метод для разбора строк в URL-адреса.

Вот URL. URL-адрес модель структуры:

упаковка основной

тип URL-адрес структура {
// Схема — схема протокола URL,
// например, "http" или "https"
Схема нить

// Непрозрачный используется для хранения любых непрозрачных данных
// это должно быть закодировано в URL
Непрозрачный нить

// Пользователь содержит информацию о пользователе, делающем запрос,
// например, имя пользователя и пароль
Пользователь *Информация о пользователе

// Хост — это имя хоста или IP-адрес
// сервера, на котором размещен URL
Хозяин нить

// Путь — это путь URL на сервере
Путь нить

// RawPath — исходный,
// закодированный путь URL
RawPath нить

// ForceQuery указывает, должен ли URL-адрес включать строку запроса
// даже если он пустой
ForceQuery логический

// RawQuery — это оригинал,
//закодированная строка запроса URL
RawQuery нить

// Фрагмент — это идентификатор фрагмента URL,
// используется для ссылки на определенный элемент на странице
Фрагмент нить

// RawFragment является исходным,
// закодированный идентификатор фрагмента URL
RawFragment нить
}

Знание того, как получить доступ к различным частям URL-адрес struct может быть полезна для таких задач, как проверка.

Разбор URL-адресов с помощью функции разбора

Разобрать функция URL Пакет предоставляет функциональные возможности для разбора строк URL на отдельные компоненты. Разобрать Функция принимает один URL-адрес в качестве аргумента и возвращает указатель на URL. URL-адрес структура, содержащая проанализированные данные URL-адреса и тип ошибки.

Вот как вы можете использовать Разобрать функция для получения элементов URL.

Импортировать (
"ФМТ"
"нетто/адрес"
)

функцияосновной() {
// URL-адрес, который вы хотите проанализировать
примерURL := " https://www.example.com/path? параметр1=значение1&параметр2=значение2"

// Разбираем URL
parsedURL, ошибка := URL. Разобрать (URL-пример)

если ошибся != ноль {
ФМТ. Println (ошибка)
возвращаться
}

// Печатаем все поля URL
ФМТ. Распечатать("Схема:", parsedURL.Схема)
ФМТ. Распечатать("Непрозрачный:", parsedURL.Непрозрачный)
ФМТ. Распечатать("Пользователь:", parsedURL.Пользователь)
ФМТ. Распечатать("Хозяин:", parsedURL.Host)
ФМТ. Распечатать("Путь:", parsedURL.Путь)
ФМТ. Распечатать("Необработанный путь:", parsedURL.RawPath)
ФМТ. Распечатать("ФорсКьюри:", parsedURL.ForceQuery)
ФМТ. Распечатать("Необработанный запрос:", parsedURL.RawQuery)
ФМТ. Распечатать("Фрагмент:", parsedURL.Fragment)
ФМТ. Распечатать("Необработанный фрагмент:", parsedURL.RawFragment)
}

примерURL переменная содержит полный, не проанализированный URL, а Разобрать функция анализирует содержимое примерURL переменная и возвращает проанализированный URL. Программа заканчивается серией обращений к Распечатать для демонстрации отдельных полей URL-адрес структура.

Функция синтаксического анализа не проверяет, является ли URL-адрес реальным, который действительно существует, она только анализирует URL-адрес синтаксически. Вы можете использовать http упаковка чтобы сделать запрос GET к URL-адресу и проверить ответ:

Импортировать (
"ФМТ"
"сеть/http"
)

функцияосновной() {
// URL, который вы хотите проверить
примерURL := " https://www.example.com"

// Делаем запрос HTTP GET к URL
ответ, ошибка := http. Получить (примерURL)

если ошибся != ноль {
ФМТ. Println (ошибка)
возвращаться
}

отложить ответ. Тело. Закрывать()

// Проверяем код состояния ответа
если ответ. СтатусКод == http. СтатусОК {
ФМТ. Распечатать(«URL-адрес существует».)
} еще {
ФМТ. Распечатать(«URL не существует».)
}
}

основной функция делает ПОЛУЧАТЬ просьба к примерURL используя Получать функция http упаковка. Эта функция возвращает экземпляр ответа и тип ошибки. Программа заканчивается на если заявление, чтобы подтвердить существование веб-сайта, проверив Код состояния HTTP против СтатусОк постоянный от http упаковка.

Этот подход позволяет выполнять действия на основе результатов проверки, например, перенаправлять пользователь на другую страницу, отображая сообщение об ошибке или повторяя запрос после определенного период.

Кодирование и декодирование параметров URL

URL пакет обеспечивает Кодировать метод кодирования параметров URL. Кодировать функция процентов-кодирует специальные символы и пробелы в параметрах URL.

Импортировать (
"ФМТ"
"нетто/адрес"
)

функцияосновной() {
// создаем новый URL. Структура значений
параметры := URL. Ценности{}

// добавляем значения в структуру
параметры Добавлять("имя", "Джон Смит")
параметры Добавлять("возраст", "30")
параметры Добавлять("пол", "мужской")

// кодируем структуру в строку
encodedParams := параметры. Кодировать()
ФМТ. Println (закодированные параметры)

// Вывод: "возраст=30&пол=мужской&имя=Джон+Смит"
}

основной функция создает новый Ценности экземпляр структуры URL пакет, и Добавлять Метод экземпляра структуры добавляет пары данных "ключ-значение" в экземпляр структуры.

Кодировать Метод преобразует пару "ключ-значение" в формат строки URL "key1=value1&key2=value2&key3=value3".

Вы можете декодировать закодированную строку URL с помощью ParseQuery функция URL упаковка.

Импортировать (
"ФМТ"
"нетто/адрес"
)

функцияосновной() {
// закодированная строка параметров URL
закодированные параметры: = «возраст = 30 и пол = мужчина и имя = Джон + Смит»

// разобрать закодированную строку в URL. Структура значений
параметры, ошибка := URL. ParseQuery (закодированные параметры)

если ошибся != ноль {
ФМТ. Println (ошибка)
}

// распечатать структуру
ФМТ. Println (параметры)

// Вывод: карта[возраст:[30] пол:[мужчина] имя:[Джон Смит]]
}

закодированный параметр переменная представляет собой закодированную строку URL. ParseQuery функция принимает в закодированный параметр переменная и возвращает декодированную строку URL и ошибку.

Эти пакеты Go могут поднять вашу игру по веб-маршрутизации на новый уровень

URL-адреса, которые вы используете для страниц вашего веб-приложения, способствуют его производительности и видимости в поисковых системах. Веб-маршрутизация — это процесс направления входящих запросов в соответствующую функцию-обработчик на основе URL-адреса.

Вы можете маршрутизировать с помощью пакета http или популярных сторонних пакетов, таких как Gorilla Mux, Chi, Pat или Httprouter. Эти пакеты делают маршрутизацию проще, чем пакет http, абстрагируя некоторые его сложности.