Тип url.URL
Тип url.URL представляет собой структуру,
которая хранит все компоненты URL-адреса: схему,
хост, путь, параметры запроса и фрагмент. Он позволяет
удобно разбирать, собирать и модифицировать URL.
Основные поля структуры включают Scheme (схема),
Host (хост), Path (путь), RawQuery
(строка запроса) и Fragment (фрагмент).
Создание URL с помощью url.Parse
Самый распространенный способ создать url.URL -
использовать функцию url.Parse, которая принимает
строку с URL и возвращает указатель на структуру
url.URL:
package 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)
}
Результат выполнения кода:
"Scheme: https"
"Host: example.com"
"Path: /path"
"RawQuery: key=value"
"Fragment: fragment"
Метод String для преобразования в строку
Метод url.URL.String преобразует структуру
URL обратно в строковый формат. Это полезно после
внесения изменений в компоненты URL:
package main
import (
"fmt"
"net/url"
)
func main() {
u := &url.URL{
Scheme: "https",
Host: "example.com",
Path: "/search",
}
fmt.Println(u.String())
}
Результат выполнения кода:
"https://example.com/search"
Метод Query для работы с параметрами
Метод url.URL.Query разбирает строку запроса
и возвращает карту значений типа url.Values.
Это позволяет легко получать и изменять параметры:
package 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())
}
Результат выполнения кода:
"Name: john"
"Age: 30"
"Updated URL: https://example.com?age=30&city=nyc&name=john"
Метод RequestURI для HTTP запросов
Метод url.URL.RequestURI возвращает строку,
которая может быть использована в HTTP запросах.
Он включает путь и строку запроса, но не включает
схему и хост:
package 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)
}
Результат выполнения кода:
"Request URI: /api/v1?limit=10"
Смотрите также
-
функцию
url.Parse,
которая разбирает строку URL в структуру url.URL -
метод
url.URL.String,
который преобразует URL обратно в строку -
метод
url.URL.Query,
который разбирает строку запроса в значения -
метод
url.URL.RequestURI,
который возвращает путь с параметрами для HTTP запроса