
cpp-httplib一个零依赖头文件把 HTTP 服务器和客户端都写了【免费下载链接】cpp-httplibA C header-only HTTP/HTTPS server and client library项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplibcpp-httplib 是一个 C header-only 库HTTP/HTTPS 的服务器和客户端全装在单个头文件httplib.h里。不用管构建系统不用链任何依赖库把这个文件拷进项目、include 一下就能开始写。如果你的项目要对外露个接口或者调个第三方 API用它在 10 分钟内就能跑起来。 整个库就一个文件把 httplib.h 拷过来就能用先说最特殊的地方——分发形式。服务器实现、客户端实现、URL 解析、WebSocket、分块传输全部塞在一个头文件里。基础 HTTP 版本在 Linux 上只依赖 pthread其余零依赖。获取方式是克隆仓库git clone https://gitcode.com/GitHub_Trending/cp/cpp-httplib然后在根目录找到httplib.h拷进你的工程。如果你想的是给现有 C 项目加个 Web 能力这就够了不需要 CMake 模块、不需要下载第三方包、不需要改链接脚本。单文件设计还有个隐藏好处翻代码方便。协议行为和你预期不一致直接打开文件搜索实现就在眼前不用在十几个目录里找。️ 十分钟写个 Web 服务器下面这段代码创建了一个监听 8080 端口、响应 GET 请求的服务器#include httplib.h int main() { httplib::Server svr; svr.Get(/, [](const httplib::Request, httplib::Response res) { res.set_content(Hello cpp-httplib!, text/plain); }); svr.listen(0.0.0.0, 8080); }用g -stdc11 -pthread -o server server.cpp编译跑起来后浏览器访问http://localhost:8080就能看到响应。这段代码基本就是仓库里 example/hello.cc 的原样只改了路径。接下来让它能干活svr.Post/Put/Delete注册各条路由路径参数用:id这种写法直接映射到req.path_params再一行svr.set_mount_point(/static, ./www)就能把整个目录当静态文件服务前端页面直接挂上去。下面这张截图里的页面就是由一个 cpp-httplib 服务器在 127.0.0.1 上直接服务出来的后面没有 Nginx。⚡ 客户端也在同一个文件里3 行调外部接口很多人以为这种库要么当服务器要么当客户端cpp-httplib 两头都占。客户端同样在这个头文件里调外部接口三行就够httplib::Client cli(http://localhost:8080); auto res cli.Get(/api/data); if (res) { /* res-status 是状态码res-body 是响应体 */ }它帮你做的是发请求、它给你的结果是res里装好的状态码和 body。你的进程从此可以直接和任何 HTTP 服务对话调第三方 API、微服务之间互相调用、写个内部运维 CLI用的都是同一个文件。跳转、gzip、chunked 编码、Basic 认证、代理这些烦人细节客户端都内置了你一行代码不用写。 WebSocket、SSE 和 HTTPS 也没换库实时场景通常是另一个坑服务器用 A 库WebSocket 得换 B 库。cpp-httplib 把 WebSocket 协议也塞进了同一个头文件注册路由长这样svr.WebSocket(/ws, [](const httplib::Request, httplib::ws::WebSocket ws) { std::string msg; while (ws.read(msg)) { ws.send(echo: msg); } });客户端连上/ws就建立连接之后ws.read/ws.send收发帧就行。服务端推送的 SSE 也支持写法可以看 README-sse.md。HTTPS 更省事在 include 头文件之前定义CPPHTTPLIB_OPENSSL_SUPPORT宏就能用SSLServer和SSLClient普通 Server/Client 的接口完全不变。嵌入式环境想换后端的话Mbed TLS 和 wolfSSL 也都有现成支持具体取舍见 TLS 后端对比文档。 想知道能走多远先看示例和教程仓库的 example/ 目录是按场景切好的hello.cc最小服务器、simplesvr.cc静态文件服务、upload.cc文件上传、wsecho.ccWebSocket 回声、ssesvr.ccSSE 推送每个都是几十行的独立程序编译命令在 example/Makefile 里。更完整的例子是 llm-app 教程6 章内容从 cpp-httplib 的 REST API 一路做到 SSE 流式响应最后打包成一个桌面翻译应用。下图就是教程里那个桌面应用的运行效果——前后端加起来代码量很小全靠这一个头文件撑着。建议的下一步先把 example/hello.cc 拷出来用 g 编译跑一遍确认环境通了真要动手做一个 HTTP 服务或客户端时按 getting-started 文档 走一遍再回头翻httplib.h里的注释查 API。【免费下载链接】cpp-httplibA C header-only HTTP/HTTPS server and client library项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考