cpp-httplib:一个头文件搞定 C++ HTTP/HTTPS 服务器与客户端
【免费下载链接】cpp-httplibA C++ header-only HTTP/HTTPS server and client library项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplib
写 C++ 程序时你常遇到一种两难:既要开一个 HTTP 接口给前端或别的程序调,又要让本程序去请求别家的 API,却不想为此引入整套框架和构建配置。cpp-httplib 就是为此做的 C++ HTTP 库——它把 HTTP/HTTPS 的服务器和客户端都装进单个httplib.h,C++11 即可编译,#include一行就能开写,服务器端和客户端能力是同一套 API。
⚡ 最快上手路径:零依赖,include 一行就够
这个库默认只依赖 C++11 标准库,不要求配置构建系统,也没有隐藏的依赖树要维护。最短的落地方式就是把httplib.h拷进工程目录,在源文件顶部#include进来再编译。只有在需要 HTTPS 时,才要在编译前定义对应的 TLS 宏并链接底层 TLS 库(下面细说)。换句话说,纯 HTTP 场景几乎没有任何配置成本,你改代码、重编译,就能跑。
下面这段代码注册了一个 GET 路由并让服务在0.0.0.0:8080上监听,访问/hi会返回一行文本:
#define CPPHTTPLIB_OPENSSL_SUPPORT #include "httplib.h" httplib::Server svr; svr.Get("/hi", [](const httplib::Request&, httplib::Response& res) { res.set_content("Hello, world!", "text/plain"); }); svr.listen("0.0.0.0", 8080);客户端侧同样简单,它向刚起的服务器发一个 GET 并打印状态码与响应体:
httplib::Client cli("http://localhost:8080"); if (auto res = cli.Get("/hi")) { std::cout << res->status << " " << res->body << "\n"; }🔍 三个决定性的机制,先想清楚再选型
单文件 header-only:整个库就一个httplib.h,你可以把它丢进vendor/或third_party/,没有第二个文件要跟着版本同步,升级也直接替换这一个文件。
TLS 后端三选一:启用 HTTPS 时按需定义CPPHTTPLIB_OPENSSL_SUPPORT(要求 OpenSSL 3.0 及以上,链接libssl、libcrypto);不想用 OpenSSL 可换成CPPHTTPLIB_MBEDTLS_SUPPORT或CPPHTTPLIB_WOLFSSL_SUPPORT,各自对应不同的底层库。选哪个取决于你运行环境里已经装了什么。
阻塞式 I/O,且只到 HTTP/1.1:它走的是阻塞 socket,没有非阻塞事件模型,也未实现 HTTP/2 或 HTTP/3。高并发的短连接请求完全够用,但如果你要靠它扛十万级长连接,这不是合适的工具。
⚠️ 避坑指南:宏、跨平台与常见错误
macOS 系统证书:想让客户端直接用系统钥匙串里的证书,定义CPPHTTPLIB_USE_CERTS_FROM_MACOSX_KEYCHAIN,就不用手动维护 CA 包了。
32 位平台不支持:官方明确不兼容 32 位目标,相关安全报告也不处理;如果你必须跑在 32 位环境,要自己承担风险。
客户端证书校验:生产环境建议cli.set_ca_cert_path("./ca-bundle.crt")指定自己的 CA 包;调试时可用cli.enable_server_certificate_verification(false)临时关闭,但上线前务必还原。
连接复用:keep-alive 默认最多 100 个连接、空闲 5 秒超时,长连接场景可用set_keep_alive_timeout调整,避免连接被提前回收。
📍 适合谁用,什么时候该换
它很适合快速原型、内部工具、给前端提供 REST 接口,以及在桌面或嵌入式程序里内置一个服务端。想往上做,WebSocket、Server-Sent Events、流式响应都有独立文档,可分别参考 README-websocket.md 与 README-sse.md:
需要放弃它的情形很明确:要 HTTP/2、非阻塞事件驱动,或者追求极限吞吐的超高并发网关——这类需求建议转向 Boost.Beast 或 Drogon 这类更偏底层的方案。一句话结论:如果你的目标是「用最少的代码,在 C++ 里同时拿到一个能用的 HTTP 服务器和客户端」,cpp-httplib 目前就是省心的那个选择。
【免费下载链接】cpp-httplibA C++ header-only HTTP/HTTPS server and client library项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplib
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考