Skip to content

HTTPC

Безопасная библиотека HTTP-клиента с безопасными настройками по умолчанию, встроенными интеллектуальными повторными попытками, цепочкой middleware и переиспользованием пула объектов.

Возможности

  • TLS 1.2+ — обязательная минимальная версия TLS, по умолчанию TLS 1.2-1.3
  • Защита от SSRF — по умолчанию блокирует подключения к приватным IP-адресам, настраиваемые исключения CIDR
  • Интеллектуальные повторные попытки — экспоненциальная задержка с джиттером, настраиваемая стратегия повторов
  • Управление пулом соединений — высокопроизводительное переиспользование соединений, поддержка HTTP/2
  • Цепочка middleware — встроенные middleware для логирования, аудита, метрик, восстановления, Request ID и др.
  • Загрузка файлов — поддержка возобновляемой загрузки, callback прогресса, проверка контрольных сумм
  • DNS-over-HTTPS — встроенное DoH-разрешение для снижения риска перехвата DNS
  • Переиспользование пула объектов — внутренние объекты ответов и string builder переиспользуются через sync.Pool, снижая нагрузку на GC

Установка

bash
go get github.com/cybergodev/httpc

Первый опыт за 30 секунд

go
package main

import (
    "fmt"
    "github.com/cybergodev/httpc"
)

func main() {
    result, err := httpc.Get("https://httpbin.org/get")
    if err != nil {
        panic(err)
    }

    fmt.Println(result.StatusCode()) // 200
}

С чего начать

Выберите путь чтения в зависимости от вашей цели:

ЦельРекомендация
Старт за 5 минутБыстрый старт
Практика за 30 минутПрактическое руководство
Найти конкретный вариант использованияШпаргалка
Изучить функции безопасностиОбзор безопасности
Найти подписи APIСправочник API

Основные концепции

HTTPC предоставляет три способа использования, от простого к гибкому:

text
Функции пакета       Экземпляр клиента              Доменный клиент
httpc.Get()  →  client, _ := httpc.NewDefault()  →  dc, _ := httpc.NewDomainDefault(url)
Разовый запрос     Пользовательская конфигурация/middleware   Управление сессией/автоподдержание Cookie

Предустановки конфигурации

ПредустановкаСценарий применения
DefaultConfig()Универсальные сценарии, безопасные значения по умолчанию
SecureConfig()Сценарии с повышенными требованиями к безопасности, строгие тайм-ауты
PerformanceConfig()Высокая пропускная способность, большой пул соединений
TestingConfig()Тестовая среда, отключение проверок безопасности
MinimalConfig()Лёгкие скрипты, без повторных попыток и редиректов