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