QNetworkRequestFactory Class
用于将具有共同网络请求属性的远程服务器端点分组的便捷类。更多内容...
| 标题: | #include <QNetworkRequestFactory> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| 自: | Qt 6.7 |
- 所有成员列表(包括继承的成员)
- QNetworkRequestFactory 属于隐式共享类。
公共函数
| QNetworkRequestFactory() | |
| QNetworkRequestFactory(const QUrl &baseUrl) | |
| QNetworkRequestFactory(const QNetworkRequestFactory &other) | |
| QNetworkRequestFactory(QNetworkRequestFactory &&other) | |
| ~QNetworkRequestFactory() | |
(since 6.8) QVariant | attribute(QNetworkRequest::Attribute attribute) const |
(since 6.8) QVariant | attribute(QNetworkRequest::Attribute attribute, const QVariant &defaultValue) const |
| QUrl | baseUrl() const |
| QByteArray | bearerToken() const |
(since 6.8) void | clearAttribute(QNetworkRequest::Attribute attribute) |
(since 6.8) void | clearAttributes() |
| void | clearBearerToken() |
| void | clearCommonHeaders() |
| void | clearPassword() |
| void | clearQueryParameters() |
| void | clearUserName() |
| QHttpHeaders | commonHeaders() const |
| QNetworkRequest | createRequest() const |
| QNetworkRequest | createRequest(const QString &path) const |
| QNetworkRequest | createRequest(const QUrlQuery &query) const |
| QNetworkRequest | createRequest(const QString &path, const QUrlQuery &query) const |
| QString | password() const |
(since 6.8) QNetworkRequest::Priority | priority() const |
| QUrlQuery | queryParameters() const |
(since 6.8) void | setAttribute(QNetworkRequest::Attribute attribute, const QVariant &value) |
| void | setBaseUrl(const QUrl &url) |
| void | setBearerToken(const QByteArray &token) |
| void | setCommonHeaders(const QHttpHeaders &headers) |
| void | setPassword(const QString &password) |
(since 6.8) void | setPriority(QNetworkRequest::Priority priority) |
| void | setQueryParameters(const QUrlQuery &query) |
| void | setSslConfiguration(const QSslConfiguration &configuration) |
| void | setTransferTimeout(std::chrono::milliseconds timeout) |
| void | setUserName(const QString &userName) |
| QSslConfiguration | sslConfiguration() const |
| void | swap(QNetworkRequestFactory &other) |
| std::chrono::milliseconds | transferTimeout() const |
| QString | userName() const |
| QNetworkRequestFactory & | operator=(QNetworkRequestFactory &&other) |
| QNetworkRequestFactory & | operator=(const QNetworkRequestFactory &other) |
相关的非成员
| QDebug | operator<<(QDebug debug, const QNetworkRequestFactory &factory) |
详细说明
REST 服务器通常具有需要相同标头和其他数据的端点。将此类端点与 QNetworkRequestFactory 组合在一起,可以更方便地向这些端点发出请求;在创建新请求时,只需提供通常会发生变化的部分,例如路径和查询参数。
QNetworkRequestFactory 的基本使用步骤如下:
- 实例化
- 设置所有请求共有的数据
- 发送请求
使用示例:
// Instantiate a factory somewhere suitable in the application
QNetworkRequestFactory api{{"https://example.com/v1"_L1}};
// Set bearer token
api.setBearerToken("my_token");
// Issue requests (reply handling omitted for brevity)
manager.get(api.createRequest("models"_L1)); // https://example.com/v1/models
// The conventional leading '/' for the path can be used as well
manager.get(api.createRequest("/models"_L1)); // https://example.com/v1/models成员函数文档
QNetworkRequestFactory::QNetworkRequestFactory()
创建一个新的 QNetworkRequestFactory 对象。请使用setBaseUrl() 来为请求设置一个有效的基 URL。
另请参阅 QNetworkRequestFactory(const QUrl &baseUrl) 和setBaseUrl()。
[explicit] QNetworkRequestFactory::QNetworkRequestFactory(const QUrl &baseUrl)
创建一个新的 QNetworkRequestFactory 对象,并将基础 URL 初始化为baseUrl 。该基础 URL 用于填充后续的网络请求。
如果 URL 包含路径组件,则会将其提取出来,并在后续的网络请求中用作基路径。这意味着在发起单个请求时提供的任何路径都将附加到此基路径之后,如下所示:
// Here the API version v2 is used as the base path:
QNetworkRequestFactory api{{"https://example.com/v2"_L1}};
// ...
manager.get(api.createRequest("models"_L1)); // https://example.com/v2/models
// Equivalent with a leading '/'
manager.get(api.createRequest("/models"_L1)); // https://example.com/v2/modelsQNetworkRequestFactory::QNetworkRequestFactory(const QNetworkRequestFactory &other)
创建other 的副本。
[constexpr noexcept default] QNetworkRequestFactory::QNetworkRequestFactory(QNetworkRequestFactory &&other)
从other 通过移动构造器创建工厂。
注意: 被移动的对象 other 处于部分形成状态,在此状态下,唯一有效的操作是销毁和赋新值。
[noexcept] QNetworkRequestFactory::~QNetworkRequestFactory()
销毁此QNetworkRequestFactory 对象。
[since 6.8] QVariant QNetworkRequestFactory::attribute(QNetworkRequest::Attribute attribute) const
返回与attribute 关联的值。如果该属性尚未设置,则返回一个通过默认构造函数构造的QVariant 。
该函数在 Qt 6.8 中引入。
另请参阅 attribute(QNetworkRequest::Attribute, const QVariant &)、setAttribute()、clearAttributes() 以及QNetworkRequest::Attribute 。
[since 6.8] QVariant QNetworkRequestFactory::attribute(QNetworkRequest::Attribute attribute, const QVariant &defaultValue) const
返回与attribute 关联的值。如果该属性未被设置,则返回defaultValue 。
该函数在 Qt 6.8 中引入。
另请参阅 attribute()、setAttribute()、clearAttributes() 以及QNetworkRequest::Attribute 。
QUrl QNetworkRequestFactory::baseUrl() const
返回用于各个请求的基础 URL。
基准 URL 可能包含路径组件。该路径将作为生成单个请求时所提供路径的“前缀”。
另请参阅 setBaseUrl()。
QByteArray QNetworkRequestFactory::bearerToken() const
返回已设置的持有人令牌。
如果存在 Bearer 令牌,则用于为请求设置Authorization: Bearer my_token 请求头。这是一种常见的授权约定,此功能仅作为额外便利提供。
获取 Bearer 令牌的方式多种多样。标准方法包括OAuth2 以及服务提供商的网站/控制面板。Bearer 令牌预计会随时间变化。例如,当使用刷新令牌进行更新时,始终重新设置新令牌可确保后续请求使用的是最新且有效的令牌。
Bearer令牌的存在不会影响commonHeaders()的列出结果。如果commonHeaders()也列出了Authorization 标头,则该标头将被覆盖。
另请参阅 setBearerToken() 和commonHeaders()。
[since 6.8] void QNetworkRequestFactory::clearAttribute(QNetworkRequest::Attribute attribute)
清除设置为该工厂的attribute 。
该函数于 Qt 6.8 中引入。
另请参阅 attribute() 和setAttribute()。
[since 6.8] void QNetworkRequestFactory::clearAttributes()
清除为此工厂设置的任何属性。
该函数在 Qt 6.8 中引入。
另请参阅 attribute() 和setAttribute()。
void QNetworkRequestFactory::clearBearerToken()
清除持有人令牌。
另请参阅 bearerToken()。
void QNetworkRequestFactory::clearCommonHeaders()
清除当前的标头。
另请参阅 commonHeaders() 和setCommonHeaders()。
void QNetworkRequestFactory::clearPassword()
清除为该工厂设置的密码。
另请参阅 password()、setPassword() 以及userName()。
void QNetworkRequestFactory::clearQueryParameters()
清除查询参数。
另请参阅 queryParameters()。
void QNetworkRequestFactory::clearUserName()
清除设置在此工厂上的用户名。
QHttpHeaders QNetworkRequestFactory::commonHeaders() const
返回当前设置的头部信息。
另请参阅 setCommonHeaders() 和clearCommonHeaders()。
QNetworkRequest QNetworkRequestFactory::createRequest() const
返回一个QNetworkRequest 。
返回的请求中已填充了此工厂所配置的数据。
另请参阅 createRequest(const QUrlQuery&) 和createRequest(const QString&, const QUrlQuery&)。
QNetworkRequest QNetworkRequestFactory::createRequest(const QString &path) const
返回一个QNetworkRequest 对象。
返回的请求 URL 是通过将提供的 `path ` 附加到 `baseUrl `(该 URL 本身可能包含路径组件)而形成的。
另请参阅 createRequest(const QString &, const QUrlQuery &)、createRequest() 和baseUrl()。
QNetworkRequest QNetworkRequestFactory::createRequest(const QUrlQuery &query) const
返回一个QNetworkRequest 。
返回的请求 URL 是通过将提供的 `query ` 附加到 `baseUrl` 上生成的。
另请参阅 createRequest(const QString &, const QUrlQuery &)、createRequest() 以及baseUrl()。
QNetworkRequest QNetworkRequestFactory::createRequest(const QString &path, const QUrlQuery &query) const
返回一个QNetworkRequest 对象。
返回的请求 URL 是通过将提供的path 和query 追加到baseUrl (该地址可能包含路径组件)生成的。
如果提供的path 包含查询项,则这些查询项将与query 中的查询项合并。
另请参阅 createRequest(const QUrlQuery&)、createRequest() 以及baseUrl()。
QString QNetworkRequestFactory::password() const
返回为该工厂设置的密码。
另请参阅 setPassword()、clearPassword() 和userName()。
[since 6.8] QNetworkRequest::Priority QNetworkRequestFactory::priority() const
返回分配给该工厂创建的任何未来请求的优先级。
该函数在 Qt 6.8 中引入。
另请参阅 setPriority() 和QNetworkRequest::priority()。
QUrlQuery QNetworkRequestFactory::queryParameters() const
返回将添加到各个请求的查询参数中的查询参数。这些查询参数将附加到各个createRequest() 调用中提供的任何潜在查询参数上。
重复查询参数的使用场景取决于服务器,但典型的示例包括语言设置?lang=en 、格式指定?format=json 、API 版本指定?version=1.0 以及 API 密钥认证。
另请参阅 setQueryParameters()、clearQueryParameters() 和createRequest()。
[since 6.8] void QNetworkRequestFactory::setAttribute(QNetworkRequest::Attribute attribute, const QVariant &value)
将attribute 关联的值设置为value 。如果该属性已设置,则替换其原有值。此工厂生成的所有后续请求都会设置这些属性。
该函数于 Qt 6.8 中引入。
另请参阅 attribute()、clearAttribute()、clearAttributes() 以及QNetworkRequest::Attribute 。
void QNetworkRequestFactory::setBaseUrl(const QUrl &url)
将单个请求中使用的基准 URL 设置为url 。
另请参阅 baseUrl()。
void QNetworkRequestFactory::setBearerToken(const QByteArray &token)
将承载者令牌设置为token 。
另请参阅 bearerToken() 和clearBearerToken()。
void QNetworkRequestFactory::setCommonHeaders(const QHttpHeaders &headers)
设置所有请求共有的headers 。
这些标头将被添加到各个请求的标头中。这是一种便捷机制,用于设置在各个请求中重复出现的标头。
另请参阅 commonHeaders()、clearCommonHeaders() 和createRequest()。
void QNetworkRequestFactory::setPassword(const QString &password)
将此工厂的密码设置为password 。
在调用createRequest() 时,密码将通过请求 URL 设置。当服务器提示需要身份验证时,QRestAccessManager /QNetworkAccessManager 将尝试使用这些凭据。
另请参阅 password()、clearPassword() 和userName()。
[since 6.8] void QNetworkRequestFactory::setPriority(QNetworkRequest::Priority priority)
将此工厂今后创建的任何请求的优先级设置为priority 。
默认优先级为QNetworkRequest::NormalPriority 。
此函数自 Qt 6.8 起引入。
另请参阅 priority() 和QNetworkRequest::setPriority()。
void QNetworkRequestFactory::setQueryParameters(const QUrlQuery &query)
设置query 参数,这些参数将被添加到各个请求的查询参数中。
另请参阅 queryParameters() 和clearQueryParameters()。
void QNetworkRequestFactory::setSslConfiguration(const QSslConfiguration &configuration)
将 SSL 配置设置为configuration 。
另请参阅 sslConfiguration()。
void QNetworkRequestFactory::setTransferTimeout(std::chrono::milliseconds timeout)
设置用于传输的timeout 。
另请参阅 transferTimeout()、QNetworkRequest::setTransferTimeout() 和QNetworkAccessManager::setTransferTimeout()。
void QNetworkRequestFactory::setUserName(const QString &userName)
将此工厂的用户名设置为userName 。
在调用createRequest() 时,用户名会在请求 URL 中设置。当服务器提示需要身份验证时,QRestAccessManager /QNetworkAccessManager 将尝试使用这些凭据。
另请参阅 userName()、clearUserName() 和password()。
QSslConfiguration QNetworkRequestFactory::sslConfiguration() const
返回设置为该工厂的 SSL 配置。SSL 配置是针对每个单独的请求分别设置的。
另请参阅 setSslConfiguration()。
[noexcept] void QNetworkRequestFactory::swap(QNetworkRequestFactory &other)
将该工厂与other 互换。此操作非常快速,且从未失败。
std::chrono::milliseconds QNetworkRequestFactory::transferTimeout() const
返回传输所使用的超时时间。
另请参阅 setTransferTimeout()、QNetworkRequest::transferTimeout() 以及QNetworkAccessManager::transferTimeout()。
QString QNetworkRequestFactory::userName() const
返回设置为该工厂的用户名。
另请参阅 setUserName()、clearUserName(),以及password()。
[noexcept] QNetworkRequestFactory &QNetworkRequestFactory::operator=(QNetworkRequestFactory &&other)
将other 移入并赋值,并返回对此工厂的引用。
注意: 被移动的对象 other 处于部分初始化状态,在此状态下,唯一有效的操作是销毁和赋值。
QNetworkRequestFactory &QNetworkRequestFactory::operator=(const QNetworkRequestFactory &other)
创建other 的副本,并返回对此工厂的引用。
相关的非成员
QDebug operator<<(QDebug debug, const QNetworkRequestFactory &factory)
将factory 写入debug 流中。
另请参阅 “调试技巧”。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.