项目Httplib库的简单学习和使用
Posted zhaocx111222333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目Httplib库的简单学习和使用相关的知识,希望对你有一定的参考价值。
Httplib学习历程
httplib库是什么:
Httplib库是一个 C++11
单文件头文件跨平台 HTTP/HTTPS 库。在使用的时候仅仅添加头文件即可。在Linux和Windows平台都可以使用。
我们只用使用httblib提供的函数即可完成HTTP客户端和服务端的搭建。
我的库来自于github:
源码简单分析:
在httplib.h的主题框架中主要包含了:
struct Request
请求数据类
struct Response
回复数据类
class Server
服务端类
class Client
客户端类
Request 请求数据类
包含了请求方法
请求路径
头部
请求正文
(加了一些设置头部字段的函数)
class Response 回复数据类
包含了版本信息
响应状态码
状态码描述
HTTP头部信息
正文信息
重定向的新位置信息
我们可以看到这个结构体封装了http相应格式
cass Server 服务端类
在源码中包含了各种类型响应结构:
主要就是Get,Post,Put,delete和listen监听端口
class Client 客户端类:
这是常用的接口的信息
对应各种请求方法
基于Json的一次练习:
结合Json序列化完成一次练习。
链接: Json.
#include "cpp-httplib"
void test(const Request &req,Response &rsp){
Json::Value val; //搭配json序列化
Json::Reader read;
bool ret=reader.parse(req.body,val); //req.body是一个字符串类型,将请求的正文信息用parse获取到val中
if(ret==false){
rsp.status=400; //返回状态码
Json::Value reason; //利用value组织返回正文信息
reason["result"]=false;
reason["reason"]="parse error!";
Json::FastWriter writer;
rsp.body=writer.write(reason);
rsp.set_header("Content-Type","application/json");//组织相应http头信息
return;
}
...数据处理...
rsp.status=200;//正确处理的响应状态码
//也可以根据自己的需要进行如上的value序列化正文
//返回响应的头部字段
return;
}
int main(){
Server srv; // 创建服务端对象
srv.Get("/",test); //get请求的回调函数test
srv.listen("0.0.0.0",9000);
}
延伸:
我们可以看到httplib使用poll实现多路转接:
还有线程池的应用:
httplib库的更能非常庞大,后续使用还需进一步钻研。
以上是关于项目Httplib库的简单学习和使用的主要内容,如果未能解决你的问题,请参考以下文章