Функция url.Parse
Функция url.Parse разбирает переданную строку URL и возвращает указатель на структуру url.URL, содержащую все компоненты адреса: схему, хост, путь, параметры запроса и фрагмент. В первый параметр мы передаем строку с URL-адресом, который нужно разобрать. Функция возвращает два значения: структуру URL и ошибку error, которая будет не nil, если разбор невозможен.
Синтаксис
url.Parse(rawURL)
Пример
Давайте разберем простой URL-адрес и выведем его компоненты:
package main
import (
"fmt"
"net/url"
)
func main() {
u, err := url.Parse("https://example.com:8080/path/to/page?key=value&foo=bar#fragment")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Scheme:", u.Scheme)
fmt.Println("Host:", u.Host)
fmt.Println("Path:", u.Path)
fmt.Println("RawQuery:", u.RawQuery)
fmt.Println("Fragment:", u.Fragment)
}
Результат выполнения кода:
"Scheme: https"
"Host: example.com:8080"
"Path: /path/to/page"
"RawQuery: key=value&foo=bar"
"Fragment: fragment"
Пример
Разберем URL без схемы и посмотрим, что вернет функция:
package main
import (
"fmt"
"net/url"
)
func main() {
u, err := url.Parse("example.com/path")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Scheme:", u.Scheme)
fmt.Println("Host:", u.Host)
fmt.Println("Path:", u.Path)
}
Результат выполнения кода:
"Scheme: "
"Host: "
"Path: example.com/path"
Пример
Обработаем ошибку при разборе некорректного URL:
package main
import (
"fmt"
"net/url"
)
func main() {
u, err := url.Parse("https://example.com:abc")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(u)
}
Результат выполнения кода:
"parse https://example.com:abc: invalid port \":abc\" after host"
Смотрите также
-
функцию
url.ParseRequestURI,
которая разбирает URL с более строгими требованиями к формату -
метод
url.URL.String,
который преобразует структуру URL обратно в строку -
функцию
url.Values.Get,
которая получает значение параметра запроса по ключу -
функцию
url.PathEscape,
которая кодирует строку для безопасного использования в пути URL