Метод http.Client.Get

Метод http.Client.Get выполняет HTTP GET-запрос к указанному URL-адресу. В качестве единственного параметра он принимает строку с адресом ресурса. Метод возвращает указатель на структуру http.Response и ошибку. Важно закрывать тело ответа с помощью defer resp.Body.Close() во избежание утечек ресурсов. Если запрос выполнен успешно, в ответе доступны код состояния, заголовки и тело ответа.

Синтаксис

goresp, err := client.Get(url)

где client — переменная типа http.Client, url — строка с адресом запроса.

Пример

Выполним GET-запрос к тестовому API и выведем код ответа:

gopackage 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)
}

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

go"Status: 200"

В данном примере мы создаем клиент, отправляем GET-запрос и выводим код состояния ответа.

Пример

Прочитаем тело ответа как строку:

gopackage 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))
}

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

go"{\n  \"args\": {}, \n  \"headers\": {...}, \n  \"origin\": \"...\", \n  \"url\": \"https://httpbin.org/get\"\n}\n"

В этом примере мы читаем тело ответа с помощью io.ReadAll и выводим его как строку.

Пример

Обработаем ошибки и проверим статус ответа:

gopackage 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")
}

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

go"Unexpected status: 404"

Здесь мы проверяем статус ответа и обрабатываем случай, когда сервер возвращает код, отличный от 200 OK.

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

  • метод http.Client.Post,
    который выполняет POST-запрос с данными
  • метод http.Client.Do,
    который выполняет произвольный HTTP-запрос
  • функцию http.Get,
    которая выполняет GET-запрос с использованием клиента по умолчанию
  • метод http.NewRequest,
    который создает новый HTTP-запрос для последующего выполнения