NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
http_server_request结构体 参考

HTTP服务器请求结构 更多...

#include <http_server_message.hpp>

类 http_server_request 继承关系图:
[图例]

Public 成员函数

NEFORCE_NODISCARD string_view parameter (const string &name) const noexcept
 获取参数值
void set_parameter (const string &name, string value)
 设置参数
NEFORCE_NODISCARD bool has_parameter (const string &name) const noexcept
 检查参数是否存在
NEFORCE_NODISCARD string_view cookie (const string &name) const noexcept
 获取Cookie值
void set_cookie (const string &name, string value)
 设置Cookie值
NEFORCE_NODISCARD bool has_cookie (const string &name) const noexcept
 检查Cookie是否存在
NEFORCE_NODISCARD string_view header (const string &name) const noexcept
 获取请求头值
void set_header (const string &name, string value)
 设置请求头
NEFORCE_NODISCARD bool has_header (const string &name) const noexcept
 检查请求头是否存在
NEFORCE_NODISCARD bool has_session () const noexcept
 检查是否有关联的有效会话
NEFORCE_NODISCARD string_view content_type () const noexcept
 获取Content-Type
NEFORCE_NODISCARD bool is_keep_alive () const noexcept
 检查是否为Keep-Alive连接
NEFORCE_NODISCARD string_view client_ip () const noexcept
 获取客户端真实IP
NEFORCE_NODISCARD string_view user_agent () const noexcept
 获取User-Agent
NEFORCE_NODISCARD string_view referer () const noexcept
 获取Referer
NEFORCE_NODISCARD bool is_ajax () const noexcept
 检查是否为AJAX请求
void clear ()
 清空请求所有数据
NEFORCE_NODISCARD string to_string () const
 序列化为HTTP请求字符串
Public 成员函数 继承自 iobject< http_server_request >
NEFORCE_CONSTEXPR20 bool try_parse (const string_view str) noexcept
 尝试从字符串解析对象
Public 成员函数 继承自 istringify< http_server_request >
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 string to_string () const
 转换为字符串

静态 Public 成员函数

static NEFORCE_NODISCARD http_server_request parse (string_view str)
 从字符串解析HTTP请求
静态 Public 成员函数 继承自 iobject< http_server_request >
static NEFORCE_NODISCARD constexpr http_server_request parse (const string_view str)
 从字符串解析对象

Public 属性

http_method method = http_method::GET()
 HTTP方法
string path = "/"
 请求路径
string version = "HTTP/1.1"
 HTTP版本
string query {}
 查询字符串
string body {}
 请求正文
unordered_map< string, stringheaders
 请求头
unordered_map< string, stringcookies
 Cookie
unordered_map< string, stringparameters
 请求参数
unordered_map< string, stringform_data
 表单数据
http_sessionsession = nullptr
 会话对象

详细描述

HTTP服务器请求结构

表示一个HTTP请求,包含请求行、头部、正文以及解析后的参数。 支持从字符串解析请求,并提供便捷的访问方法。

使用示例:

// 解析请求
"GET /api/users?id=123 HTTP/1.1\r\n"
"Host: example.com\r\n"
"Cookie: session=abc123\r\n"
"\r\n"
);
// 获取请求信息
if (request.method == http_method::GET()) {
string id = request.parameter("id");
}
// 获取Cookie
string session_id = request.cookie("session");
// 获取客户端IP(支持代理)
string client_ip = request.client_ip();
// 检查是否为AJAX请求
if (request.is_ajax()) {
// 返回JSON响应
}
// 获取会话
if (request.has_session()) {
auto* session = request.session;
session->touch();
}
static const http_method & GET()
GET方法
NEFORCE_NODISCARD string_view client_ip() const noexcept
获取客户端真实IP
static NEFORCE_NODISCARD http_server_request parse(string_view str)
从字符串解析HTTP请求
http_session * session
会话对象

在文件 http_server_message.hpp71 行定义.

成员函数说明

◆ client_ip()

NEFORCE_NODISCARD string_view http_server_request::client_ip ( ) const
noexcept

获取客户端真实IP

返回
IP地址

优先从X-Forwarded-For头获取,其次从X-Real-IP头获取。 适用于经过代理的请求。

◆ content_type()

NEFORCE_NODISCARD string_view http_server_request::content_type ( ) const
inlinenoexcept

获取Content-Type

返回
Content-Type值

在文件 http_server_message.hpp169 行定义.

引用了 header().

◆ cookie()

NEFORCE_NODISCARD string_view http_server_request::cookie ( const string & name) const
inlinenoexcept

获取Cookie值

参数
nameCookie名
返回
Cookie值,不存在返回空字符串

在文件 http_server_message.hpp116 行定义.

引用了 cookies , 以及 name().

◆ has_cookie()

NEFORCE_NODISCARD bool http_server_request::has_cookie ( const string & name) const
inlinenoexcept

检查Cookie是否存在

参数
nameCookie名
返回
存在返回true

在文件 http_server_message.hpp133 行定义.

引用了 cookies , 以及 name().

◆ has_header()

NEFORCE_NODISCARD bool http_server_request::has_header ( const string & name) const
inlinenoexcept

检查请求头是否存在

参数
name头名称
返回
存在返回true

在文件 http_server_message.hpp157 行定义.

引用了 headers , 以及 name().

◆ has_parameter()

NEFORCE_NODISCARD bool http_server_request::has_parameter ( const string & name) const
inlinenoexcept

检查参数是否存在

参数
name参数名
返回
存在返回true

在文件 http_server_message.hpp107 行定义.

引用了 name() , 以及 parameters.

◆ has_session()

NEFORCE_NODISCARD bool http_server_request::has_session ( ) const
inlinenoexcept

检查是否有关联的有效会话

返回
存在有效会话返回true

在文件 http_server_message.hpp163 行定义.

引用了 session.

◆ header()

NEFORCE_NODISCARD string_view http_server_request::header ( const string & name) const
inlinenoexcept

获取请求头值

参数
name头名称
返回
头值,不存在返回空字符串

在文件 http_server_message.hpp140 行定义.

引用了 headers , 以及 name().

被这些函数引用 content_type(), is_ajax(), is_keep_alive(), referer() , 以及 user_agent().

◆ is_ajax()

NEFORCE_NODISCARD bool http_server_request::is_ajax ( ) const
inlinenoexcept

检查是否为AJAX请求

返回
是AJAX请求返回true

检查X-Requested-With头是否为XMLHttpRequest。

在文件 http_server_message.hpp207 行定义.

引用了 header().

◆ is_keep_alive()

NEFORCE_NODISCARD bool http_server_request::is_keep_alive ( ) const
inlinenoexcept

检查是否为Keep-Alive连接

返回
是Keep-Alive返回true

在文件 http_server_message.hpp175 行定义.

引用了 header().

◆ parameter()

NEFORCE_NODISCARD string_view http_server_request::parameter ( const string & name) const
inlinenoexcept

获取参数值

参数
name参数名
返回
参数值,不存在返回空字符串

在文件 http_server_message.hpp90 行定义.

引用了 name() , 以及 parameters.

◆ parse()

NEFORCE_NODISCARD http_server_request http_server_request::parse ( string_view str)
static

从字符串解析HTTP请求

参数
strHTTP请求字符串
返回
解析后的请求对象
异常
http_exception请求格式无效时抛出

解析请求行、头部和正文。 自动解析Cookie头。

◆ referer()

NEFORCE_NODISCARD string_view http_server_request::referer ( ) const
inlinenoexcept

获取Referer

返回
Referer值

在文件 http_server_message.hpp199 行定义.

引用了 header().

◆ set_cookie()

void http_server_request::set_cookie ( const string & name,
string value )
inline

设置Cookie值

参数
nameCookie名
valueCookie值

在文件 http_server_message.hpp126 行定义.

引用了 cookies, move() , 以及 name().

◆ set_header()

void http_server_request::set_header ( const string & name,
string value )
inline

设置请求头

参数
name头名称
value头值

在文件 http_server_message.hpp150 行定义.

引用了 headers, move() , 以及 name().

◆ set_parameter()

void http_server_request::set_parameter ( const string & name,
string value )
inline

设置参数

参数
name参数名
value参数值

在文件 http_server_message.hpp100 行定义.

引用了 move(), name() , 以及 parameters.

◆ to_string()

NEFORCE_NODISCARD string http_server_request::to_string ( ) const

序列化为HTTP请求字符串

返回
HTTP请求字符串

◆ user_agent()

NEFORCE_NODISCARD string_view http_server_request::user_agent ( ) const
inlinenoexcept

获取User-Agent

返回
User-Agent值

在文件 http_server_message.hpp193 行定义.

引用了 header() , 以及 user_agent().

被这些函数引用 user_agent().


该结构体的文档由以下文件生成: