0Pricing
Go Academy · Урок

Выполнение HTTP-запросов

GET и POST с http.NewRequest и http.DefaultClient

«Выполнение HTTP-запросов» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Краткая форма http.Get

http.Get(url) — самый простой способ выполнить GET-запрос. Всегда закрывайте тело ответа.

resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()

http.DefaultClient

http.Get использует DefaultClient уровня пакета. В production создавайте собственный клиент с заданными ограничениями времени ожидания.

client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)

http.NewRequest для полного контроля

Используйте http.NewRequest, чтобы задать метод, заголовки и тело:

req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)

Тело запроса

Передавайте тело запроса через io.Reader. Для данных JSON используйте bytes.NewBuffer(data) или strings.NewReader.

data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))

Проверка состояния ответа

Всегда проверяйте код состояния HTTP — по умолчанию код 4xx/5xx не возвращается как ошибка Go.

if resp.StatusCode != http.StatusOK {
    return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}

Декодирование ответа JSON

Декодируйте тело ответа с помощью json.Decoder, чтобы сначала не читать его целиком в память:

var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)

Параметры запроса

Создавайте строки запроса с помощью url.Values и добавляйте их к URL:

params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()

Client.Do и пользовательский транспорт

Оберните http.DefaultTransport, чтобы добавить логику повторных попыток, пользовательские настройки TLS или прокси, не теряя поведение по умолчанию.

Тело ответа необходимо закрывать

Если не закрыть тело ответа, базовое TCP-соединение останется занятым. Всегда используйте defer resp.Body.Close(), даже для ответов с ошибками.

Обработка перенаправлений

Клиент по умолчанию выполняет до 10 перенаправлений. Задайте client.CheckRedirect, чтобы настроить или отключить переходы по перенаправлениям.

Настройка User-Agent

Задайте описательный заголовок User-Agent, чтобы журналы сервера могли идентифицировать ваш клиент:

req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")

Быстрая проверка

Почему следует всегда закрывать тело HTTP-ответа?

Итоги: выполнение HTTP-запросов

Ключевые моменты:

  • Всегда откладывайте вызов resp.Body.Close() с помощью defer
  • Создавайте собственный http.Client с Timeout для production
  • Используйте http.NewRequestWithContext для работы с контекстом и пользовательскими заголовками
  • Проверяйте resp.StatusCode — ошибки HTTP не являются ошибками Go

Часто задаваемые вопросы

Урок «Выполнение HTTP-запросов» бесплатный?

Да — полный текст урока «Выполнение HTTP-запросов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Выполнение HTTP-запросов»?

GET и POST с http.NewRequest и http.DefaultClient Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Выполнение HTTP-запросов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Выполнение HTTP-запросов
  2. Настройка тайм-аутов и заголовков
  3. Декодирование ответов JSON
  4. Обработка ошибок и логика повторных попыток
← Назад к Go Academy