Метод url.URL.Query
Метод url.URL.Query преобразует строку запроса (часть URL после знака ?) в тип url.Values. Это структура, которая представляет собой карту, где ключом является имя параметра, а значением — срез строк. Метод полезен для разбора URL-параметров в веб-приложениях, при работе с API или при разборе HTTP-запросов. Он не требует ручного разбора строки — вся логика уже встроена в пакет net/url.
Синтаксис
func (u *URL) Query() Values
Метод не принимает никаких параметров и возвращает значение типа url.Values.
Пример
Разберем простой URL с параметрами и получим их значения с помощью Query:
package main
import (
"fmt"
"net/url"
)
func main() {
rawURL := "http://example.com/page?name=john&age=30"
parsedURL, err := url.Parse(rawURL)
if err != nil {
fmt.Println("Error parsing URL:", err)
return
}
query := parsedURL.Query()
fmt.Println(query)
}
Результат выполнения кода:
map[age:[30] name:[john]]
Пример
Получим значения отдельных параметров с помощью метода Get структуры url.Values:
package main
import (
"fmt"
"net/url"
)
func main() {
rawURL := "http://example.com/search?q=golang&lang=en"
parsedURL, _ := url.Parse(rawURL)
query := parsedURL.Query()
search := query.Get("q")
lang := query.Get("lang")
missing := query.Get("nonexistent")
fmt.Printf("Search: %s, Language: %s, Missing: %s\n", search, lang, missing)
}
Результат выполнения кода:
"Search: golang, Language: en, Missing: "
Пример
Обработаем URL с одинаковыми именами параметров — метод вернет срез всех значений:
package main
import (
"fmt"
"net/url"
)
func main() {
rawURL := "http://example.com/filter?color=red&color=blue&color=green"
parsedURL, _ := url.Parse(rawURL)
query := parsedURL.Query()
colors := query["color"]
fmt.Println(colors)
}
Результат выполнения кода:
[red blue green]
Пример
Если строка запроса отсутствует, метод вернет пустую карту, а не nil:
package main
import (
"fmt"
"net/url"
)
func main() {
rawURL := "http://example.com/noquery"
parsedURL, _ := url.Parse(rawURL)
query := parsedURL.Query()
fmt.Println(len(query))
}
Результат выполнения кода:
"0"
Смотрите также
-
функцию
url.Parse,
которая преобразует строку в структуру URL -
функцию
url.QueryEscape,
которая кодирует строку для безопасного включения в URL -
функцию
url.QueryUnescape,
которая декодирует строку из URL-формата -
метод
url.Values.Encode,
который сериализует параметры в строку запроса