欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > [C++][第三方库][httplib]详细讲解

[C++][第三方库][httplib]详细讲解

2025/9/16 1:18:38 来源:https://blog.csdn.net/qq_37281656/article/details/142690789  浏览:    关键词:[C++][第三方库][httplib]详细讲解

目录

  • 1.介绍
  • 2.安装
  • 3.类与接口
  • 4.使用


1.介绍

  • C++ HTTP库(cpp-httplib)是一个轻量级的C++ HTTP客户端/服务器库,它提供了简单的API来创建HTTP服务器和客户端,支持同步和异步操作
  • 特点
    • 轻量级cpp-httplib的设计目标是简单和轻量,只有一个头文件包含即可,不依赖于任何外部库
    • 跨平台:它支持多种操作系统,包括Windows、Linux、MacOS
    • 同步和异步操作:提供了同步和异步两种操作方式,允许开发者根据需要选择
    • 支持HTTP/1.1:实现了HTTP/1.1协议,包括持久连接和管道化
    • Multipart from-data:支持发送和接收multipart/form-data类型的请求,这对于文件上传非常有用
    • SSL/TLS:通过使用OpenSSLmbedTLS库,cpp-httplib支持HTTPS和WSS
    • 简单易用:API设计简洁,易于学习和使用
    • 性能:尽管是轻量级库,但性能表现良好,适合多种应用场景
    • 社区活跃cpp-httplib有一个活跃的社区,不断有新的功能和改进被加入

2.安装

git clone https://github.com/yhirose/cpp-httplib.git

3.类与接口

  • httplib回调处理流程:在一个哈希表内,维护某个方法内对应请求资源的对应处理方法
    namespace httplib 
    { struct Request { std::string method; std::string path; Headers headers; std::string body; Params params; };struct Response { std::string version; int status = -1; std::string reason; Headers headers; std::string body; void set_content(const std::string &s,  const std::string &content_type); void set_header(const std::string &key,  const std::string &val); };class Server { using Handler = std::function<void(const Request &, Response &)>; Server &Get(const std::string &pattern, Handler handler); Server &Post(const std::string &pattern, Handler handler); Server &Put(const std::string &pattern, Handler handler);   Server &Delete(const std::string &pattern, Handler handler); bool listen(const std::string &host, int port); };class Client { explicit Client(const std::string &host, int port); Result Get(const std::string &path, const Headers &headers); Result Post(const std::string &path, const std::string &body, const std::string &content_type); Result Put(const std::string &path, const std::string &body, const std::string &content_type); Result Delete(const std::string &path, const std::string &body, const std::string &content_type); };
    } 
    

4.使用

  • 服务器搭建流程
    • 实例化服务器对象Server
    • 注册回调函数,告诉服务器收到哪个请求,应该使用哪个回调函数进行处理
    • 启动服务器
    #include "httplib.h"int main()
    {// 1.实例化服务器对象httplib::Server svr;// 2.注册回调函数  void(const httplib::Request&, const httplib::Response&)svr.Get("/SnowK", [](const httplib::Request& req, httplib::Response& resp){std::cout << req.method << std::endl;std::cout << req.path << std::endl;for(auto& iter : req.headers){std::cout << iter.first << ": " << iter.second << std::endl;}std::string body("<html><body><h1>Hello SnowK<h1><body><html>");resp.set_content(body, "text/html");resp.status = 200;});// 3.启动服务器svr.listen("0.0.0.0", 9200);return 0;
    }
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词