Функция http.Get
Функция http.Get выполняет HTTP GET-запрос
по указанному URL-адресу. Она принимает один параметр -
строку с адресом ресурса, и возвращает два значения:
указатель на http.Response и ошибку
error. При успешном выполнении ответ
необходимо закрывать с помощью вызова
defer resp.Body.Close().
Синтаксис
resp, err := http.Get(url)
Пример
Давайте выполним GET-запрос к тестовому API и выведем статус ответа:
package main
import (
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://httpbin.org/get")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
Результат выполнения кода:
"Status: 200 OK"
Пример
Прочитаем тело ответа как строку с помощью
io.ReadAll:
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
resp, err := http.Get("https://httpbin.org/get")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading body:", err)
return
}
fmt.Println(string(body))
}
Результат выполнения кода (сокращенный):
"{\n \"args\": {}, \n \"headers\": {...}, \n \"origin\": \"...\", \n \"url\": \"https://httpbin.org/get\"\n}"
Пример
Обработаем возможную ошибку при запросе к несуществующему ресурсу:
package main
import (
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://example.invalid")
if err != nil {
fmt.Println("Request failed:", err)
return
}
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
Результат выполнения кода:
"Request failed: Get \"https://example.invalid\": dial tcp: lookup example.invalid: no such host"
Смотрите также
-
функцию
http.Post,
которая выполняет POST-запрос с телом -
функцию
http.PostForm,
которая отправляет данные формы методом POST -
функцию
http.Head,
которая выполняет HEAD-запрос (получает только заголовки) -
тип
http.Client,
который предоставляет более гибкую настройку запросов