NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
http_client_message.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_HTTP_HTTP_CLIENT_MESSAGE_HPP__
2#define NEFORCE_NETWORK_HTTP_HTTP_CLIENT_MESSAGE_HPP__
3
19
25NEFORCE_BEGIN_NAMESPACE__
26NEFORCE_BEGIN_HTTP__
27
32
40public:
43 bool chunked = false;
54 string body;
56
62 NEFORCE_NODISCARD string_view header(const string& key) const noexcept {
63 const auto it = headers.find(key);
64 if (it == headers.end() || it->second.empty()) {
65 return "";
66 }
67 return it->second[0].view();
68 }
69
75 NEFORCE_NODISCARD const vector<string>& headers_all(const string& key) const {
76 static const vector<string> empty;
77 const auto it = headers.find(key);
78 return it != headers.end() ? it->second : empty;
79 }
80
86 NEFORCE_NODISCARD bool has_header(const string& key) const noexcept { return headers.find(key) != headers.end(); }
87
92 NEFORCE_NODISCARD bool is_success() const noexcept {
93 const auto code = static_cast<uint16_t>(status);
94 return code >= 200 && code < 300;
95 }
96
101 NEFORCE_NODISCARD bool is_redirect() const noexcept {
102 const auto code = static_cast<uint16_t>(status);
103 return code >= 300 && code < 400;
104 }
105
110 NEFORCE_NODISCARD bool is_client_error() const noexcept {
111 const auto code = static_cast<uint16_t>(status);
112 return code >= 400 && code < 500;
113 }
114
119 NEFORCE_NODISCARD bool is_server_error() const noexcept {
120 const auto code = static_cast<uint16_t>(status);
121 return code >= 500 && code < 600;
122 }
123
128 NEFORCE_NODISCARD string_view content_type() const noexcept { return header("Content-Type"); }
129};
130
131
140 string host;
142 string path = "/";
143 string version = "HTTP/1.1";
146 string body;
147
153 NEFORCE_NODISCARD string_view header(const string& key) const noexcept {
154 const auto it = headers.find(key);
155 if (it == headers.end() || it->second.empty()) {
156 return "";
157 }
158 return it->second.view();
159 }
160
166 void set_header(const string& key, string value) { headers[key] = _NEFORCE move(value); }
167
173 void add_query_param(const string& key, string value) { query_params[key] = _NEFORCE move(value); }
174
182 NEFORCE_NODISCARD string build_full_path() const;
183};
184 // HTTP
186
187NEFORCE_END_HTTP__
188NEFORCE_END_NAMESPACE__
189#endif // NEFORCE_NETWORK_HTTP_HTTP_CLIENT_MESSAGE_HPP__
无序映射容器
动态大小数组容器
持续时间类型
unsigned short uint16_t
16位无符号整数类型
unsigned long long uint64_t
64位无符号整数类型
duration< int64_t, milli > milliseconds
毫秒持续时间
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图
NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE constexpr bool empty(const Container &cont) noexcept(noexcept(cont.empty()))
检查容器是否为空
http_status
HTTP状态码枚举
@ S2_OK
200 OK 请求成功
HTTP Cookie和会话管理
网络端口定义和转换工具
HTTP客户端请求结构
unordered_map< string, string > query_params
查询参数
void set_header(const string &key, string value)
设置请求头
NEFORCE_NODISCARD string build_full_path() const
构建完整请求路径
void add_query_param(const string &key, string value)
添加查询参数
NEFORCE_NODISCARD string_view header(const string &key) const noexcept
获取请求头值
unordered_map< string, string > headers
请求头
HTTP客户端响应结构
NEFORCE_NODISCARD string_view header(const string &key) const noexcept
获取第一个响应头值
milliseconds send_time
发送请求耗时
NEFORCE_NODISCARD bool is_success() const noexcept
检查是否为成功响应(2xx)
NEFORCE_NODISCARD bool has_header(const string &key) const noexcept
检查响应头是否存在
bool chunked
是否使用分块传输编码
milliseconds total_time
总耗时
http_status status
HTTP状态码
milliseconds connect_time
连接建立耗时
NEFORCE_NODISCARD const vector< string > & headers_all(const string &key) const
获取所有同名响应头值
unordered_map< string, vector< string > > headers
响应头
NEFORCE_NODISCARD bool is_server_error() const noexcept
检查是否为服务器错误响应(5xx)
NEFORCE_NODISCARD string_view content_type() const noexcept
获取Content-Type
vector< http_cookie > cookies
解析后的Cookie
NEFORCE_NODISCARD bool is_client_error() const noexcept
检查是否为客户端错误响应(4xx)
NEFORCE_NODISCARD bool is_redirect() const noexcept
检查是否为重定向响应(3xx)
uint64_t content_length
Content-Length值
string effective_url
最终请求的URL
milliseconds receive_time
接收响应耗时
uint16_t http_version_major
HTTP主版本号
uint16_t http_version_minor
HTTP次版本号
HTTP方法定义
static const http_method & GET()
GET方法
网络端口封装类
无序映射容器
动态大小数组容器