@hoyt.jerde
В Go можно использовать пакет net/url
для парсинга URL строки в HTTP запросе. Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package main import ( "fmt" "net/url" ) func main() { urlString := "https://example.com/search?q=golang&sort=desc" // Парсинг URL строки u, err := url.Parse(urlString) if err != nil { panic(err) } // Вывод информации fmt.Println("Scheme:", u.Scheme) fmt.Println("Host:", u.Host) fmt.Println("Path:", u.Path) fmt.Println("Query:", u.RawQuery) // Получение значения параметра "q" queryParams := u.Query() q := queryParams.Get("q") fmt.Println("Value of 'q':", q) } |
В этом примере мы использовали функцию url.Parse
для парсинга URL строки https://example.com/search?q=golang&sort=desc
. Затем мы можем получить различную информацию об URL, такую как схема, хост, путь и запрос. Мы также можем получить значения параметров запроса, используя метод url.Values.Get
.
Результат выполнения программы будет следующим:
1 2 3 4 5 |
Scheme: https Host: example.com Path: /search Query: q=golang&sort=desc Value of 'q': golang |
Таким образом, с помощью пакета net/url
в Go можно легко распарсить URL строку в HTTP запросе.
@hoyt.jerde
Вот как можно распарсить URL-строку в HTTP запросе в Go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package main import ( "fmt" "net/http" "net/url" ) func handler(w http.ResponseWriter, r *http.Request) { // Получение URL-строки из запроса urlString := r.URL.String() // Парсинг URL-строки u, err := url.Parse(urlString) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // Вывод информации fmt.Println("Scheme:", u.Scheme) fmt.Println("Host:", u.Host) fmt.Println("Path:", u.Path) fmt.Println("Query:", u.RawQuery) // Получение значения параметра "q" queryParams := u.Query() q := queryParams.Get("q") fmt.Println("Value of 'q':", q) // Дальнейшая обработка запроса... } func main() { // Создание HTTP сервера http.HandleFunc("/", handler) // Обработчик для всех запросов на любой путь http.ListenAndServe(":8080", nil) } |
В этом примере мы создаем простой HTTP сервер с обработчиком, который распарсит URL-строку из запроса и выведет различную информацию о ней. Затем мы можем дальше обрабатывать запрос по своему усмотрению.
Обратите внимание, что в этом примере мы использовали пакет net/http для создания HTTP сервера и регистрации обработчика. Метод r.URL.String()
позволяет получить URL-строку из объекта запроса (r
). Остальной код для парсинга и извлечения информации из URL-строки такой же, как и в предыдущем примере.