QNetworkRequestFactory 类

方便地将具有共同网络请求数据属性的远程服务器端点分组。 更多...

头文件 #include <QNetworkRequestFactory>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network
自从Qt 6.7
状态初步阶段

此类正在开发中,并可能发生变化。

公共函数

QNetworkRequestFactory()
QNetworkRequestFactory(const QUrl &baseUrl)
QNetworkRequestFactory(const QNetworkRequestFactory &other)
QNetworkRequestFactory(QNetworkRequestFactory &&other)
~QNetworkRequestFactory()
QUrlbaseUrl() const
QByteArraybearerToken() const
voidclearBearerToken()
voidclearCommonHeaders()
voidclearPassword()
voidclearQueryParameters()
voidclearUserName()
QHttpHeaderscommonHeaders() const
QNetworkRequestcreateRequest() const
QNetworkRequestcreateRequest(const QUrlQuery &query) const
QNetworkRequestcreateRequest(const QString &path) const
QNetworkRequestcreateRequest(const QString &path, const QUrlQuery &query) const
QStringpassword() const
QUrlQueryqueryParameters() const
voidsetBaseUrl(const QUrl &url)
voidsetBearerToken(const QByteArray &token)
voidsetCommonHeaders(const QHttpHeaders &headers)
voidsetPassword(const QString &password)
voidsetQueryParameters(const QUrlQuery &query)
voidsetSslConfiguration(const QSslConfiguration &configuration)
voidsetTransferTimeout(std::chrono::milliseconds timeout)
voidsetUserName(const QString &userName)
QSslConfigurationsslConfiguration() const
voidswap(QNetworkRequestFactory &other)
std::chrono::millisecondstransferTimeout() const
QStringuserName() const
QNetworkRequestFactory &operator=(const QNetworkRequestFactory &other)
QNetworkRequestFactory &operator=(QNetworkRequestFactory &&other)
QDebugoperator<<(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(可能包含路径部分)上追加提供的pathquery来形成的。

如果提供的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

另请参阅 transferTimeoutQNetworkRequest::setTransferTimeoutQNetworkAccessManager::setTransferTimeout

void QNetworkRequestFactory::setUserName(const QString &userName)

将此工厂的用户名设置为 userName

当调用 createRequest() 时,在请求 URL 中设置用户名。当服务器指示需要身份验证时,QRestAccessManager / QNetworkAccessManager 将尝试使用这些凭据。

另请参阅 userNameclearUserNamepassword

QSslConfiguration QNetworkRequestFactory::sslConfiguration() const

返回此工厂设置的 SSL 配置。SSL 配置设置为每个单独的请求。

另请参阅 setSslConfiguration

[noexcept] void QNetworkRequestFactory::swap(QNetworkRequestFactory &other)

other 交换此工厂。此操作非常快且不会失败。

std::chrono::milliseconds QNetworkRequestFactory::transferTimeout() const

返回用于传输的超时时间。

另请参阅 setTransferTimeoutQNetworkRequest::transferTimeoutQNetworkAccessManager::transferTimeout

QString QNetworkRequestFactory::userName() const

返回设置到此工厂的用户名。

另请参阅 setUserNameclearUserNamepassword

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公司及/或其他国家的注册商标。所有其他商标均属于其各自的所有者。