Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpHtGt 233 of 280 menu
◀ ▶

Простой HTTP-запрос в Go

Самый короткий путь к странице по известному адресу это команда получения из пакета net/http. Она возвращает объект ответа и ошибку: сбой может случиться еще до ответа сервера, например при неверном адресе или обрыве сети.

После проверки ошибки тело ответа закрывают через defer, затем читают целиком командой io.ReadAll из поля Body. Полученные байты часто превращают в строку для вывода или разбора.

Запросим главную страницу учебного хоста:

package main import ( "fmt" "io" "log" "net/http" ) func main() { resp, err := http.Get("https://example.com") if err != nil { log.Fatal(err) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(len(body)) }

На экране длина тела в байтах. Код состояния здесь не смотрим: для него есть отдельный урок, а сейчас важен сам прием чтения и закрытия.

Тот же прием для локального адреса, если сервис уже слушает порт:

package main import ( "fmt" "io" "log" "net/http" ) func main() { resp, err := http.Get("http://127.0.0.1:8080/ping") if err != nil { log.Fatal(err) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(string(body)) }

Дан адрес:

https://example.com

Напишите программу, которая выполнит запрос по этому адресу, закроет тело ответа отложенно и выведет длину прочитанных байт.

Дан следующий код:

resp, err := http.Get("https://example.com") if err != nil { log.Fatal(err) } body, err := io.ReadAll(resp.Body)

Скажите, какую строку добавить сразу после успешного получения resp и зачем она нужна.

Скажите, что вернет первое значение из пары результатов команды получения, если адрес содержит опечатку и хост не находится.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить