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/models
QNetworkRequestFactory::QNetworkRequestFactory(const QNetworkRequestFactory &other)
创建other 的副本。
[noexcept]
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
返回已设置的承载令牌。
承载标记(如果存在)用于设置请求的Authorization: Bearer my_token
标头。这是一种常见的授权约定,也是一种额外的便利。
获取承载令牌的方法多种多样。标准方法包括OAuth2
和服务提供商的网站/仪表板。预计承载令牌会随时间发生变化。例如,当使用刷新令牌更新时,始终再次设置新令牌可确保后续请求获得最新的有效令牌。
承载令牌的存在不会影响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 (其本身可能包含路径组件)上形成的。
另请参阅 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()、password()、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)
Move-assignsother 并返回对该工厂的引用。
注意: 从移动对象other 将处于部分形成状态,在这种状态下,唯一有效的操作是销毁和分配新值。
QNetworkRequestFactory &QNetworkRequestFactory::operator=(const QNetworkRequestFactory &other)
创建other 的副本,并返回对该工厂的引用。
相关非成员
QDebug operator<<(QDebug debug, const QNetworkRequestFactory &factory)
将factory 写入debug 流。
另请参阅 调试技巧。
© 2025 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.