QNetworkRequestFactory 类
方便地将具有共同网络请求数据属性的远程服务器端点分组。 更多...
头文件 | #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() | |
QUrl | baseUrl() const |
QByteArray | bearerToken() const |
void | clearBearerToken() |
void | clearCommonHeaders() |
void | clearPassword() |
void | clearQueryParameters() |
void | clearUserName() |
QHttpHeaders | commonHeaders() const |
QNetworkRequest | createRequest() const |
QNetworkRequest | createRequest(const QUrlQuery &query) const |
QNetworkRequest | createRequest(const QString &path) const |
QNetworkRequest | createRequest(const QString &path, const QUrlQuery &query) const |
QString | password() const |
QUrlQuery | queryParameters() const |
void | setBaseUrl(const QUrl &url) |
void | setBearerToken(const QByteArray &token) |
void | setCommonHeaders(const QHttpHeaders &headers) |
void | setPassword(const QString &password) |
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=(const QNetworkRequestFactory &other) |
QNetworkRequestFactory & | operator=(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().
[显式]
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对象。
QUrl QNetworkRequestFactory::baseUrl() const
返回用于单个请求的基础网址。
基础网址可能包含路径组件。此路径用作生成单个请求时提供的路径的“前缀”。
另请参阅setBaseUrl().
QByteArray QNetworkRequestFactory::bearerToken() const
返回已设置的承载令牌。
承载令牌(如果存在)用于为请求设置Authorization: Bearer my_token
头。这是一种常见的授权约定,并提供额外的便利。
获取承载令牌的方法各不相同。标准方法包括OAuth2
和提供商的网站仪表板。承载令牌可能会随时间改变。例如,当使用刷新令牌更新时,始终设置新令牌保证后续请求有最新的、有效的令牌。
携带令牌的存在不会影响 commonHeaders() 列表。如果 commonHeaders() 也列出了 Authorization
标头,它将被覆盖。
参见setBearerToken() 和 commonHeaders()。
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 QUrlQuery &query) const
返回一个 QNetworkRequest。
返回的请求的 URL 是通过将提供的 query 添加到 baseUrl 生成的。
参见createRequest(const QString &, const QUrlQuery &), createRequest() 和 baseUrl()。
QNetworkRequest QNetworkRequestFactory::createRequest(const QString &path) const
返回一个 QNetworkRequest。
返回的请求的 URL 是通过将提供的 path 添加到 baseUrl (其中可能本身就有路径部件) 生成的。
参见createRequest(const QString &, const QUrlQuery &), createRequest() 和 baseUrl()。
QNetworkRequest QNetworkRequestFactory::createRequest(const QString &path, const QUrlQuery &query) const
返回一个 QNetworkRequest。
返回的请求数据URL是通过在baseUrl(可能包含路径部分)上追加提供的path和query来形成的。
如果提供的path包含查询项,它们将与query中的项合并。
参见 createRequest(const QUrlQuery&), createRequest(), 和 baseUrl()。
QString QNetworkRequestFactory::password() const
返回设置到此工厂的密码。
参见 setPassword(), password(), clearPassword(), 和 userName()。
QUrlQuery QNetworkRequestFactory::queryParameters() const
返回添加到每个请求查询参数中的查询参数。这些查询参数会被添加到通过单独的createRequest()调用的任何潜在查询参数中。
使用重复查询参数的用例取决于服务器,但典型示例包括语言设置 ?lang=en
,格式指定 ?format=json
,API版本指定 ?version=1.0
和 API密钥认证。
参见 setQueryParameters(), clearQueryParameters(), 和 createRequest()。
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
。void QNetworkRequestFactory::setQueryParameters(const QUrlQuery &query)
设置要添加到各个请求查询参数中的 query 参数。
另请参阅 queryParameters() 和 clearQueryParameters
。void QNetworkRequestFactory::setSslConfiguration(const QSslConfiguration &configuration)
设置 configuration 为 SSL 配置。
另请参阅 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
。QNetworkRequestFactory &QNetworkRequestFactory::operator=(const QNetworkRequestFactory &other)
创建 other 的副本并返回对此工厂的引用。
[noexcept]
QNetworkRequestFactory &QNetworkRequestFactory::operator=(QNetworkRequestFactory &&other)
移动赋值并返回对该工厂的引用。
注意:移动之后的对象other置于部分构造状态,此时唯一的有效操作是销毁或赋值新值。
相关非成员函数
QDebug operator<<(QDebug debug, const QNetworkRequestFactory &factory)
将factory写入debug流。
也参见 调试技术.
© 2024 Qt 公司。本文档中的贡献属于其各自的版权所有者。本提供的文档是根据由自由软件基金会发布的GNU自由文档许可版本1.3许可的。Qt和各种标志是芬兰的Qt公司及/或其他国家的注册商标。所有其他商标均属于其各自的所有者。