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