Высокопроизводительный веб-сервер, обратный прокси, балансировщик нагрузки, API-шлюз и кэш контента, написанный на C.
yhirose/cpp-httplib
Однофайловая библиотека на C++11 для создания HTTP/HTTPS-серверов и клиентов с блокирующим вводом-выводом через сокеты.
- Звёзды
- 16,923
- Форки
- 2,777
- Открытые issues
- 0
- Последний коммит
- 16 часов назад
Что это?
cpp-httplib — кроссплатформенная библиотека на C++11, предоставляющая HTTP/HTTPS-сервер и клиент. Она состоит из одного заголовочного файла httplib.h, поэтому для добавления библиотеки в проект достаточно включить этот файл. Библиотека использует блокирующий ввод-вывод через сокеты и поддерживает только HTTP/1.1; HTTP/2 и HTTP/3 не реализованы.
Библиотека поддерживает маршрутизацию с параметрами пути и регулярными выражениями, раздачу статических файлов с сопоставлением MIME-типов, загрузку файлов и multipart-форм, потоковую передачу данных и передачу чанками, keep-alive-соединения, а также хуки в стиле middleware: обработчики до и после маршрутизации и обработчики исключений. Server-Sent Events и WebSocket описаны как дополнительные возможности.
TLS доступен через OpenSSL (версии 3.0 или новее), Mbed TLS или wolfSSL — выбор задаётся директивой компиляции. Также предусмотрены настройки проверки сертификатов, взаимная TLS-аутентификация и интеграция с системным хранилищем сертификатов в macOS и Windows.
Ключевые возможности
- 01Подключение одним заголовочным файлом, без зависимостей при сборке для базового использования HTTP
- 02HTTP-сервер и клиент в одной библиотеке
- 03HTTPS через OpenSSL, Mbed TLS или wolfSSL
- 04Маршрутизация с параметрами пути и регулярными выражениями
- 05Раздача статических файлов, multipart-загрузка и чанковые или потоковые ответы
- 06Взаимная TLS-аутентификация и настройки проверки сертификатов
Сценарии использования
- Добавление лёгкой встроенной HTTP-точки доступа в приложение на C++ без подключения тяжёлого фреймворка
- Создание C++-клиента для вызова REST API по HTTPS
- Раздача статических файлов или простых веб-API из инструмента на C++
- Быстрое прототипирование локального HTTP-сервиса в проекте на C++ с минимальной настройкой
Быстрый старт
- 1
Скачайте файл httplib.h из репозитория
- 2
Подключите httplib.h в коде C++ и соберите сервер или клиент, как показано в примерах
Что важно знать
- Используется блокирующий ввод-вывод через сокеты, поэтому библиотека не подходит для неблокирующих решений.
- Поддерживается только HTTP/1.1; HTTP/2 и HTTP/3 не реализованы.
- 32-разрядные платформы не поддерживаются и не проходят проверку безопасности.
Темы
Частые вопросы
- Что такое cpp-httplib?
- Однофайловая библиотека на C++11 для создания HTTP/HTTPS-серверов и клиентов с блокирующим вводом-выводом через сокеты. cpp-httplib — кроссплатформенная библиотека на C++11, предоставляющая HTTP/HTTPS-сервер и клиент. Она состоит из одного заголовочного файла httplib.h, поэтому для добавления библиотеки в проект достаточно включить этот файл. Библиотека использует блокирующий ввод-вывод через сокеты и поддерживает только HTTP/1.1; HTTP/2 и HTTP/3 не реализованы.
- cpp-httplib можно использовать бесплатно? Какая у него лицензия?
- cpp-httplib распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- cpp-httplib всё ещё поддерживается?
- Активно поддерживается. Последний коммит в cpp-httplib — 22 окт. 2026 г..
- Для чего можно использовать cpp-httplib?
- Добавление лёгкой встроенной HTTP-точки доступа в приложение на C++ без подключения тяжёлого фреймворка Создание C++-клиента для вызова REST API по HTTPS Раздача статических файлов или простых веб-API из инструмента на C++ Быстрое прототипирование локального HTTP-сервиса в проекте на C++ с минимальной настройкой
- Как установить cpp-httplib?
- Скачайте файл httplib.h из репозитория Подключите httplib.h в коде C++ и соберите сервер или клиент, как показано в примерах
- Где скачать cpp-httplib?
- Исходный код и инструкции по установке — на GitHub: https://github.com/yhirose/cpp-httplib
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Caddy — расширяемый веб-сервер на Go, который поддерживает HTTP/1.1, HTTP/2 и HTTP/3 и по умолчанию автоматически включает HTTPS.
Быстрая реализация HTTP-сервера и клиента для Go с высокой пропускной способностью и низкими накладными расходами на выделение памяти.
Header-only библиотека C++ для быстрого и точного разбора строк в float, double и целые числа; drop-in-реализация from_chars.
Быстрый микрофреймворк на C++ в стиле Flask для создания HTTP- и WebSocket-сервисов: header-only и простой в использовании.
Высокопроизводительный минималистичный веб-фреймворк для Go на базе стандартного пакета net/http.