РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1111 of 1593 menu

Функция url.ParseRequestURI

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

Синтаксис

url.ParseRequestURI(rawURI)

Пример

Давайте разберем строку URI на компоненты и выведем полученную структуру:

package main import ( "fmt" "net/url" ) func main() { res, err := url.ParseRequestURI("https://example.com/path?query=1#fragment") if err != nil { fmt.Println(err) return } fmt.Println(res) }

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

"https://example.com/path?query=1#fragment"

Пример

Разберем URI и получим доступ к отдельным компонентам, таким как схема, хост, путь и параметры запроса:

package main import ( "fmt" "net/url" ) func main() { res, err := url.ParseRequestURI("https://user:pass@example.com:8080/path/to/resource?key=value&key2=value2") if err != nil { fmt.Println(err) return } fmt.Println("Scheme:", res.Scheme) fmt.Println("Host:", res.Host) fmt.Println("Path:", res.Path) fmt.Println("User:", res.User) fmt.Println("RawQuery:", res.RawQuery) }

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

"Scheme: https" "Host: example.com:8080" "Path: /path/to/resource" "User: user:pass" "RawQuery: key=value&key2=value2"

Пример

Попробуем разобрать строку без схемы. В этом случае функция вернет ошибку:

package main import ( "fmt" "net/url" ) func main() { res, err := url.ParseRequestURI("example.com/path") if err != nil { fmt.Println(err) return } fmt.Println(res) }

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

"parse \"example.com/path\": invalid URI for request"

Пример

Разберем URI с параметрами запроса и получим их значения с помощью метода Query:

package main import ( "fmt" "net/url" ) func main() { res, err := url.ParseRequestURI("https://example.com/search?q=golang&page=2&sort=asc") if err != nil { fmt.Println(err) return } params := res.Query() fmt.Println(params.Get("q")) fmt.Println(params.Get("page")) fmt.Println(params.Get("sort")) }

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

"golang" "2" "asc"

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

  • функцию url.Parse,
    которая разбирает URL с более мягкими требованиями к синтаксису
  • функцию url.QueryEscape,
    которая экранирует строку для использования в параметрах запроса
  • функцию url.QueryUnescape,
    которая декодирует экранированную строку параметров запроса
  • метод url.URL.String,
    который преобразует структуру URL обратно в строку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить