1. HttpServer 模块概述
muduo 网络库中的 HttpServer 是一个轻量级、可嵌入的 HTTP 服务器实现,它基于 muduo 的核心组件 TcpServer 构建,为开发者提供了简洁高效的 HTTP 协议处理能力。这个模块的设计体现了 muduo 一贯的"只做必要的事"哲学,将网络 I/O、协议解析和业务逻辑清晰分离。
在实际项目中,我经常使用 HttpServer 来快速搭建内部监控接口、管理后台或简单的 RESTful API 服务。它的最大优势在于与 muduo 事件循环的无缝集成,可以轻松嵌入到已有的 muduo 应用中,而无需引入额外的 HTTP 服务器组件。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. HttpServer 类结构解析
2.1 核心类组成
HttpServer 类的设计非常精简,主要包含以下关键部分:
cpp复制class HttpServer : noncopyable {
public:
typedef std::function<void(const HttpRequest&, HttpResponse*)> HttpCallback;
HttpServer(EventLoop* loop, const InetAddress& listenAddr,
const string& name, TcpServer::Option option = TcpServer::kNoReusePort);
void setHttpCallback(const HttpCallback& cb);
void setThreadNum(int numThreads);
void start();
private:
void onConnection(const TcpConnectionPtr& conn);
void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp receiveTime);
void onRequest(const TcpConnectionPtr&, const HttpRequest&);
TcpServer server_;
HttpCallback httpCallback_;
};
这个类结构体现了几个重要设计决策:
- 继承自 noncopyable 确保单例性
- 使用 std::function 作为回调接口,提供灵活性
- 内部封装 TcpServer 处理底层网络通信
- 所有关键方法都是私有的,对外提供最小接口
2.2 与 TcpServer 的关系
HttpServer 不是从 TcpServer 继承而来,而是采用组合模式包含一个 TcpServe
