当前位置:首页 » 《休闲阅读》 » 正文

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

4 人参与  2024年10月15日 18:01  分类 : 《休闲阅读》  评论

点击全文阅读


目录

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;}

点击全文阅读


本文链接:http://zhangshiyu.com/post/172283.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1