Функция url.Parse

Функция url.Parse разбирает переданную строку URL и возвращает указатель на структуру url.URL, содержащую все компоненты адреса: схему, хост, путь, параметры запроса и фрагмент. В первый параметр мы передаем строку с URL-адресом, который нужно разобрать. Функция возвращает два значения: структуру URL и ошибку error, которая будет не nil, если разбор невозможен.

Синтаксис

gourl.Parse(rawURL)

Пример

Давайте разберем простой URL-адрес и выведем его компоненты:

gopackage 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)
}

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

go"Scheme: https"
"Host: example.com:8080"
"Path: /path/to/page"
"RawQuery: key=value&foo=bar"
"Fragment: fragment"

Пример

Разберем URL без схемы и посмотрим, что вернет функция:

gopackage 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)
}

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

go"Scheme: "
"Host: "
"Path: example.com/path"

Пример

Обработаем ошибку при разборе некорректного URL:

gopackage 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)
}

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

go"parse https://example.com:abc: invalid port \":abc\" after host"

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

  • функцию url.ParseRequestURI,
    которая разбирает URL с более строгими требованиями к формату
  • метод url.URL.String,
    который преобразует структуру URL обратно в строку
  • функцию url.Values.Get,
    которая получает значение параметра запроса по ключу
  • функцию url.PathEscape,
    которая кодирует строку для безопасного использования в пути URL