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, снижая нагрузку на 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.New()  →  dc, _ := httpc.NewDomain(url)
Одноразовый запрос  Настраиваемая конфигурация    Управление сессиями/Cookie

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

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