Тип url.URL

Тип url.URL представляет собой структуру, которая хранит все компоненты URL-адреса: схему, хост, путь, параметры запроса и фрагмент. Он позволяет удобно разбирать, собирать и модифицировать URL. Основные поля структуры включают Scheme (схема), Host (хост), Path (путь), RawQuery (строка запроса) и Fragment (фрагмент).

Создание URL с помощью url.Parse

Самый распространенный способ создать url.URL - использовать функцию url.Parse, которая принимает строку с URL и возвращает указатель на структуру url.URL:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  u, err := url.Parse("https://example.com/path?key=value#fragment")
  if err != nil {
    fmt.Println("Parse error:", 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"
"Path: /path"
"RawQuery: key=value"
"Fragment: fragment"

Метод String для преобразования в строку

Метод url.URL.String преобразует структуру URL обратно в строковый формат. Это полезно после внесения изменений в компоненты URL:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  u := &url.URL{
    Scheme: "https",
    Host:   "example.com",
    Path:   "/search",
  }
  fmt.Println(u.String())
}

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

go"https://example.com/search"

Метод Query для работы с параметрами

Метод url.URL.Query разбирает строку запроса и возвращает карту значений типа url.Values. Это позволяет легко получать и изменять параметры:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  u, _ := url.Parse("https://example.com?name=john&age=30")
  q := u.Query()
  fmt.Println("Name:", q.Get("name"))
  fmt.Println("Age:", q.Get("age"))

  q.Set("city", "nyc")
  u.RawQuery = q.Encode()
  fmt.Println("Updated URL:", u.String())
}

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

go"Name: john"
"Age: 30"
"Updated URL: https://example.com?age=30&city=nyc&name=john"

Метод RequestURI для HTTP запросов

Метод url.URL.RequestURI возвращает строку, которая может быть использована в HTTP запросах. Он включает путь и строку запроса, но не включает схему и хост:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  u, _ := url.Parse("https://example.com/api/v1?limit=10")
  reqURI := u.RequestURI()
  fmt.Println("Request URI:", reqURI)
}

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

go"Request URI: /api/v1?limit=10"

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

  • функцию url.Parse,
    которая разбирает строку URL в структуру url.URL
  • метод url.URL.String,
    который преобразует URL обратно в строку
  • метод url.URL.Query,
    который разбирает строку запроса в значения
  • метод url.URL.RequestURI,
    который возвращает путь с параметрами для HTTP запроса