前言
本篇文章源码的地址为:https://github.com/freshman94/NetLib
首先,介绍几个类用于封装HTTP请求和响应。
- HttpRequest
- Httpparser
- HttpResponse
HttpRequest类
HttpRequest用于封装HTTP请求,它的成员变量为:
enum Method{ Invalid, Get, Post, Head, Put, Delete};
enum Version{ Unknown, Http10, Http11};
Method method_;
Version version_;
string path_;
std::unordered_map<std::string, std::string> paras_; //参数
std::unordered_map<string, string> headers_;
path_表示请求资源的路径,paras_为request的参数,headers_为request的首部信息。
HttpParser类
HttpParser类用于解析HTTP请求,其核心成员变量为HttpRequest request_;
核心成员函数为
bool parseRequest(Buffer* buf)
buf为TCP连接的接收缓冲区,其中存储的数据就是HTTP请求。 HttpParser解析该请求,并将得到的信息,如:请求的method、资源的路径和参数