cpp-httplib 介绍与安装
C++ HTTP 库(cpp-httplib)是一个轻量级的 C++ HTTP 客户端/服务器库,它提供了简单的 API 来创建 HTTP 服务器和客户端,支持同步和异步操作。
以下是一些关于 cpp-httplib 的主要特点:
- 轻量级:
cpp-httplib的设计目标是简单和轻量,只需要一个头文件包含即可,不依赖于任何外部库。 - 跨平台:它支持多种操作系统,包括
Windows、Linux和macOS。 - 同步和异步操作:库提供了同步和异步两种操作方式,允许开发者根据需要选择。
- 支持 HTTP/1.1:它实现了
HTTP/1.1协议,包括持久连接和管道化。 - Multipart form-data:支持发送和接收
multipart/form-data类型的请求,这对于文件上传非常有用。 - SSL/TLS 支持:通过使用
OpenSSL或mbedTLS库,cpp-httplib支持HTTPS和WSS。 - 简单易用:
API设计简洁,易于学习和使用。 - 性能:尽管是轻量级库,但性能表现良好,适合多种应用场景。
- 社区活跃:
cpp-httplib有一个活跃的社区,不断有新的功能和改进被加入。
安装非常简单,只需要以下命令:
git clone https://github.com/yhirose/cpp-httplib.git
cpp-httplib 使用
下图是 cpp-httplib 的回调处理流程,核心是用一个哈希表来记录不同规则对于的 <正则表达式,回调函数> 的关系!
比如下图我们在 GET 规则中添加了 /hi 和其对应回调函数 HelloWorld,当我们去访问 http://ip 地址:端口/hi 的时候,服务器就会执行该回调函数 HelloWorld 将对应的响应填充然后进行返回!
下面介绍以下这个 http 库中的类和接口:
namespace httplib {
// 请求数据结构,封装 HTTP 请求信息
struct Request {
std::string method; // 请求方法 (如 GET, POST, PUT, DELETE)
std::string path; // 请求的路径
Headers headers; // 请求头
std::string body;
Params params;
};
{
std::string version;
status = ;
std::string reason;
Headers headers;
std::string body;
;
;
};
{
:
Handler = std::function<( Request &, Response &)>;
;
;
;
;
;
};
{
:
;
;
;
;
;
};
}


