QHttpServerRouterRule 类
QHttpServerRouterRule 是 QHttpServerRouter 规则的基类。 更多信息...
头文件 | #include <QHttpServerRouterRule> |
CMake | find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer) |
qmake | QT += httpserver |
自 Q | 6.4 |
状态 | 技术预览 |
公共类型
公共函数
QHttpServerRouterRule(const QString &pathPattern, QHttpServerRouterRule::RouterHandler routerHandler) | |
QHttpServerRouterRule(const QString &pathPattern, const QHttpServerRequest::Methods methods, QHttpServerRouterRule::RouterHandler routerHandler) | |
虚 | ~QHttpServerRouterRule() |
保护函数
bool | exec(const QHttpServerRequest &request, QHttpServerResponder &responder) const |
bool | hasValidMethods() const |
虚 bool | matches(const QHttpServerRequest &request, QRegularExpressionMatch *match) const |
详细描述
使用 QHttpServerRouterRule 指定预期的请求参数
常数 | 描述 |
---|---|
path | QUrl::path() |
HTTP | methods QHttpServerRequest::Methods |
callback | 用户定义的响应回调 |
注意:这是一个低级 API,有关高级替代方案,请参阅 QHttpServer。
QHttpServerRouterRule 和 QHttpServerRouter 的使用示例
template<typename ViewHandler> void route(const char *path, const QHttpServerRequest::Methods methods, ViewHandler &&viewHandler) { auto rule = std::make_unique<QHttpServerRouterRule>( path, methods, [this, viewHandler = std::forward<ViewHandler>(viewHandler)] (QRegularExpressionMatch &match, const QHttpServerRequest &request, QHttpServerResponder &&responder) mutable { auto boundViewHandler = router.bindCaptured<ViewHandler>( std::move(viewHandler), match); // call viewHandler boundViewHandler(); }); // QHttpServerRouter router.addRule<ViewHandler>(std::move(rule)); } // Valid: route("/user/", [] (qint64 id) { } ); // "/user/1" // "/user/3" // route("/user/<arg>/history", [] (qint64 id) { } ); // "/user/1/history" // "/user/2/history" // route("/user/<arg>/history/", [] (qint64 id, qint64 page) { } ); // "/user/1/history/1" // "/user/2/history/2" // Invalid: route("/user/<arg>", [] () { } ); // ERROR: path pattern has <arg>, but ViewHandler does not have any arguments route("/user/\\d+", [] () { } ); // ERROR: path pattern does not support manual regexp
注意:路径模式中的正则表达式不受支持,但可以使用 QHttpServerRouter::addConverter() 注册(将 "<val>" 的使用与特定类型匹配)。
成员类型文档
[alias]
QHttpServerRouterRule::RouterHandler
类型别名 std::function<void(const QRegularExpressionMatch &,const QHttpServerRequest &, QHttpServerResponder &&)>
成员函数文档
[explicit]
QHttpServerRouterRule::QHttpServerRouterRule(const QString &pathPattern, QHttpServerRouterRule::RouterHandler routerHandler)
使用路径模式 pathPattern 和路由处理程序 routerHandler 构造规则。
默认情况下,该规则接受所有 HTTP 方法。
另请参阅:QHttpServerRequest::Methods.
[明确说明]
QHttpServerRouterRule::QHttpServerRouterRule(const QString &pathPattern, const QHttpServerRequest::Methods methods, QHttpServerRouterRule::RouterHandler routerHandler)
构造一个具有路径模式 pathPattern、方法 methods 和路由处理器 routerHandler 的规则。
该规则接受所有可用的 HTTP 方法的任何组合。
另请参阅:QHttpServerRequest::Methods.
[虚函数 noexcept]
QHttpServerRouterRule::~QHttpServerRouterRule()
销毁一个 QHttpServerRouterRule。
[保护成员]
bool QHttpServerRouterRule::exec(const QHttpServerRequest &request, QHttpServerResponder &responder) const
如果匹配,则对此规则执行给定的 request。
当 QHttpServerRouter 接收到新的请求时,会调用此函数。如果给定的 request 与此规则匹配,则此函数通过给定的 responder 返回响应并返回 true
。否则返回 false
。
[保护成员]
bool QHttpServerRouterRule::hasValidMethods() const
如果方法有效,则返回 true
。
[虚保护成员]
bool QHttpServerRouterRule::matches(const QHttpServerRequest &request, QRegularExpressionMatch *match) const
确定给定的 request 是否匹配此规则。
当 exec() 调用此虚拟函数来检查 request 是否与此规则匹配。如果找到匹配项,它将存储在指向 match(不能为 nullptr
)的指针所指向的对象中,并返回 true
。否则返回 false
。
© 2024 Qt 公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 和相应的标志是芬兰以及/或其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。