提供HTTP服务,主要包含以下几个模块:
- HTTP常量定义,包括HTTP方法与状态枚举。
- HTTP请求与响应结构。
- HTTP解析器,包含HTTP请求解析器与HTTP响应解析器。
- HTTP服务器。
- HTTP会话结构。
- HTTP Servlet。
HTTP模块依赖nodejs/http-parser提供的HTTP解析器,并且直接复用了nodejs/http-parser中定义的HTTP方法与状态枚举。
HTTP常量定义
包括HttpMethod和HttpStatus两个定义,如下:
http_parser/http_parser.h
/* Request Methods */ #define HTTP_METHOD_MAP(XX) \ XX(0, DELETE, DELETE) \ XX(1, GET, GET) \ XX(2, HEAD, HEAD) \ XX(3, POST, POST) \ XX(4, PUT, PUT) \ ... /* Status Codes */ #define HTTP_STATUS_MAP(XX) \ XX(100, CONTINUE, Continue) \ XX(101, SWITCHING_PROTOCOLS, Switching Protocols) \ XX(102, PROCESSING, Processing) \ XX(200, OK, OK) \ XX(201, CREATED, Created) \ XX(202, ACCEPTED, Accepted) \ XX(203, NON_AUTHORITATIVE_INFORMATION, Non-Authoritative Information) \ ...
http.h
/**
* @brief HTTP方法枚举
*/
enum class HttpMethod {
#define XX(num, name, string) name = num,
HTTP_METHOD_MAP(XX)
#undef XX
INVALID_METHOD
};
/**
* @brief HTTP状态枚举
*/
enum class HttpStatus {
#define XX(code, name, desc) name = code,
HTTP_STATUS_MAP(XX)
#undef XX
};