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() | Лёгкие скрипты, без повторных попыток и редиректов |