Метод http.Client.Get
Метод http.Client.Get выполняет HTTP GET-запрос
к указанному URL-адресу. В качестве единственного параметра
он принимает строку с адресом ресурса. Метод возвращает
указатель на структуру http.Response и ошибку.
Важно закрывать тело ответа с помощью defer resp.Body.Close()
во избежание утечек ресурсов. Если запрос выполнен успешно,
в ответе доступны код состояния, заголовки и тело ответа.
Синтаксис
resp, err := client.Get(url)
где client — переменная типа http.Client,
url — строка с адресом запроса.
Пример
Выполним GET-запрос к тестовому API и выведем код ответа:
package main
import (
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
resp, err := client.Get("https://httpbin.org/get")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
fmt.Println("Status:", resp.StatusCode)
}
Результат выполнения кода:
"Status: 200"
В данном примере мы создаем клиент, отправляем GET-запрос и выводим код состояния ответа.
Пример
Прочитаем тело ответа как строку:
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
resp, err := client.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}\n"
В этом примере мы читаем тело ответа с помощью
io.ReadAll и выводим его как строку.
Пример
Обработаем ошибки и проверим статус ответа:
package main
import (
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
resp, err := client.Get("https://httpbin.org/status/404")
if err != nil {
fmt.Println("Request failed:", err)
return
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
fmt.Printf("Unexpected status: %d\n", resp.StatusCode)
return
}
fmt.Println("Request succeeded")
}
Результат выполнения кода:
"Unexpected status: 404"
Здесь мы проверяем статус ответа и обрабатываем случай, когда сервер возвращает код, отличный от 200 OK.
Смотрите также
-
метод
http.Client.Post,
который выполняет POST-запрос с данными -
метод
http.Client.Do,
который выполняет произвольный HTTP-запрос -
функцию
http.Get,
которая выполняет GET-запрос с использованием клиента по умолчанию -
метод
http.NewRequest,
который создает новый HTTP-запрос для последующего выполнения