РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1009 of 1593 menu

Переменная http.DefaultClient

Переменная http.DefaultClient представляет собой экземпляр клиента HTTP, который используется по умолчанию при выполнении запросов с помощью функций пакета net/http, таких как http.Get, http.Post и других. Она упрощает выполнение HTTP-запросов, освобождая разработчика от необходимости создавать собственный экземпляр клиента. Однако стоит помнить, что http.DefaultClient не имеет таймаутов по умолчанию, поэтому для продакшн-среды рекомендуется создавать собственный клиент с настроенными таймаутами.

Синтаксис

import "net/http" http.DefaultClient

Пример

Давайте выполним GET-запрос с использованием http.DefaultClient и получим данные с веб-страницы:

package main import ( "fmt" "io" "net/http" ) func main() { resp, err := http.DefaultClient.Get("https://example.com") 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.Printf("Status: %s\n", resp.Status) fmt.Printf("Body length: %d bytes\n", len(body)) }

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

"Status: 200 OK" "Body length: 1256 bytes"

Пример

Давайте создадим POST-запрос с использованием http.DefaultClient и передадим данные в формате JSON:

package main import ( "bytes" "fmt" "io" "net/http" ) func main() { jsonData := []byte(`{"name": "John", "age": 30}`) resp, err := http.DefaultClient.Post( "https://httpbin.org/post", "application/json", bytes.NewBuffer(jsonData), ) 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.Printf("Status: %s\n", resp.Status) fmt.Printf("Response: %s\n", string(body)) }

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

"Status: 200 OK" "Response: {\"args\":{}, \"data\":\"{\\\"name\\\": \\\"John\\\", \\\"age\\\": 30}\", ...}"

Пример

Давайте настроим таймауты для http.DefaultClient, изменив его поле Timeout:

package main import ( "fmt" "net/http" "time" ) func main() { http.DefaultClient.Timeout = 5 * time.Second start := time.Now() resp, err := http.DefaultClient.Get("https://example.com") elapsed := time.Since(start) if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() fmt.Printf("Status: %s\n", resp.Status) fmt.Printf("Time taken: %v\n", elapsed) }

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

"Status: 200 OK" "Time taken: 1.234s"

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

  • структуру http.Client,
    которая предоставляет гибкую настройку HTTP-клиента
  • метод http.Client.Do,
    который выполняет HTTP-запрос с настраиваемым клиентом
  • переменную http.DefaultTransport,
    которая определяет транспорт по умолчанию для HTTP-клиента
  • функцию http.Get,
    которая выполняет GET-запрос через стандартный клиент
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить