Skip to content

HTTPC

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

Возможности

  • TLS 1.2+ — принудительная минимальная версия TLS, по умолчанию TLS 1.2-1.3
  • Защита от SSRF — блокировка подключений к приватным IP по умолчанию, настраиваемые исключения CIDR
  • Интеллектуальные повторные попытки — экспоненциальная задержка с джиттером, настраиваемые стратегии повторов
  • Управление пулом соединений — высокопроизводительное переиспользование соединений с поддержкой HTTP/2
  • Цепочки промежуточного ПО — встроенные middleware для логирования, аудита, метрик, восстановления, Request ID и др.
  • Загрузка файлов — поддержка докачки, обратные вызовы прогресса, проверка контрольных сумм
  • DNS-over-HTTPS — встроенное разрешение DoH для снижения риска перехвата DNS
  • Пул объектов — встроенный sync.Pool для снижения allocations и нагрузки на 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)
    }
    defer httpc.ReleaseResult(result)

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

С чего начать

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

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

Ключевые концепции

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

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

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

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