class QRestAccessManager#

《QRestAccessManager》(Python类) 是对 `QNetworkAccessManager` 的便捷包装。了解更多…

Inheritance diagram of PySide6.QtNetwork.QRestAccessManager

自 6.7 版本新增。

概述#

方法#

注意事项

这份文档可能包含自动从 C++ 转换为 Python 的代码片段。我们欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单来告知我们。

详细描述#

警告

本部分包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

《QRestAccessManager》是在 `QNetworkAccessManager` 基础之上的一层便捷包装。它修正了对于典型 RESTful 客户端应用有用的数据类型和 HTTP 方法。

可以通过直接配置包装的 `QNetworkAccessManager` 来访问常规的 Qt 网络特性。《QRestAccessManager》不拥有包装的 `QNetworkAccessManager`。

QRestAccessManager 和相关的 QRestReply 类只能在它们所在的消息中(thread)中使用。更多信息请参见 QObject 线程亲和力文档。

发起网络请求和响应处理#

使用与所需 HTTP 方法相对应的函数调用来发起网络请求,如 get()post()

使用信号和槽#

函数返回一个 QNetworkReply * 对象,其信号可用于传统 Qt 信号和槽方式跟进行务请求的完成。

以下是如何发送 GET 请求并处理响应的示例

reply = manager.get(request)
reply.finished.connect(this, [reply]() {
    # The reply may be wrapped in the finish handler:
    restReply = QRestReply(reply)
    if restReply.isSuccess():
        # ...
})

使用回调和上下文对象#

这些函数还接受一个 QObject(子类)类型的上下文对象和一个回调函数作为参数。回调函数接收一个 QRestReply & 作为参数。回调可以是任何可调用的函数,包括指向成员函数的指针。

当响应完成处理时(即使是由于错误导致处理完成)将调用这些回调。

上下文对象可以是 nullptr,尽管从一般原则讲不推荐这样做。使用有效的上下文对象可以确保如果上下文对象在请求处理期间被销毁,则不会调用回调。访问已销毁上下文的回调是应用程序不当行为的一个来源。

以下是如何发送 GET 请求并检查响应的示例

# With lambda
manager.get(request, self, [self](QRestReply reply) {
    if reply.isSuccess():
        # ...

})
# With member function
manager->get(request, self.handleFinished)

许多函数接受要发送给服务器的数据。这些数据作为请求后面的第二个参数提供。

以下是如何发送 POST 请求并检查响应的示例

myJson = QJsonDocument()
# ...
manager.post(request, myJson, self, [self](QRestReply reply) {
    if not reply.isSuccess():
        # ...

    if std.optional json = reply.readJson():
        # use *json

})

提供的 QRestReply & 只在回调执行期间有效。如果需要更长的时间,可以将它移动到另一个 QRestReply ,或者创建一个新的实例并用 QNetworkReply (参见 networkReply() )初始化。

支持的数据类型#

以下表格总结了方法和支持的数据类型。 X 表示支持。

数据类型

get()

post()

put()

head()

patch()

deleteResource()

sendCustomRequest()

无数据

X

X

X

QByteArray

X

X

X

X

X

QJsonDocument *)

X

X

X

X

QVariantMap **)

X

X

X

QHttpMultiPart

X

X

X

QIODevice

X

X

X

X

X

*) QJsonDocument 以 QJsonDocument::Compact 格式发送,如果未设置 Content-Type 报头,则将其设置为 application/json

**) QVariantMap 转换为并被视为 QJsonObject

__init__(manager[, parent=None])#
参数:

构造一个 QRestAccessManager 对象,并将 parent 设置为父对象,将 manager 设置为用于通信的底层 QNetworkAccessManager

另请参阅

networkAccessManager()

deleteResource(request, context, slot)#
参数:
返回类型:

QNetworkReply

deleteResource(request)
参数:

request - QNetworkRequest

返回类型:

QNetworkReply

get(request, data, context, slot)#
参数:
返回类型:

QNetworkReply

get(request, data, context, slot)
参数:
返回类型:

QNetworkReply

get(request, data, context, slot)
参数:
返回类型:

QNetworkReply

get(request, context, slot)
参数:
返回类型:

QNetworkReply

get(request)
参数:

request - QNetworkRequest

返回类型:

QNetworkReply

get(request, data)
参数:
返回类型:

QNetworkReply

get(request, data)
参数:
返回类型:

QNetworkReply

get(request, data)
参数:
返回类型:

QNetworkReply

head(request, context, slot)#
参数:
返回类型:

QNetworkReply

head(request)
参数:

request - QNetworkRequest

返回类型:

QNetworkReply

networkAccessManager()#
返回类型:

QNetworkAccessManager

返回底层的 QNetworkAccessManager 实例。

另请参阅

QNetworkAccessManager

patch(request, data, context, slot)#
参数:
返回类型:

QNetworkReply

patch(request, data, context, slot)
参数:
返回类型:

QNetworkReply

patch(request, data, context, slot)
参数:
返回类型:

QNetworkReply

patch(request, data, context, slot)
参数:
  • request - QNetworkRequest

  • data – 键类型为 QString,值类型为 QVariant 的字典。

  • context - QObject

  • slot - PyCallable

返回类型:

QNetworkReply

patch(request, data)
参数:
返回类型:

QNetworkReply

patch(request, data)
参数:
返回类型:

QNetworkReply

patch(request, data)
参数:
返回类型:

QNetworkReply

patch(request, data)
参数:
  • request - QNetworkRequest

  • data – 键类型为 QString,值类型为 QVariant 的字典。

返回类型:

QNetworkReply

post(request, data)#
参数:
  • request - QNetworkRequest

  • data – 键类型为 QString,值类型为 QVariant 的字典。

返回类型:

QNetworkReply

post(request, data)
参数:
返回类型:

QNetworkReply

post(request, data, context, slot)
参数:
返回类型:

QNetworkReply

post(request, data)
参数:
返回类型:

QNetworkReply

post(request, data)
参数:
返回类型:

QNetworkReply

post(request, data, context, slot)
参数:
  • request - QNetworkRequest

  • data – 键类型为 QString,值类型为 QVariant 的字典。

  • context - QObject

  • slot - PyCallable

返回类型:

QNetworkReply

post(request, data, context, slot)
参数:
返回类型:

QNetworkReply

post(request, data, context, slot)
参数:
返回类型:

QNetworkReply

post(request, data, context, slot)
参数:
返回类型:

QNetworkReply

post(request, data)
参数:
返回类型:

QNetworkReply

put(request, data)#
参数:
返回类型:

QNetworkReply

put(request, data)
参数:
  • request - QNetworkRequest

  • data – 键类型为 QString,值类型为 QVariant 的字典。

返回类型:

QNetworkReply

put(request, data)
参数:
返回类型:

QNetworkReply

put(request, data)
参数:
返回类型:

QNetworkReply

put(request, data)
参数:
返回类型:

QNetworkReply

put(request, data, context, slot)
参数:
  • request - QNetworkRequest

  • data – 键类型为 QString,值类型为 QVariant 的字典。

  • context - QObject

  • slot - PyCallable

返回类型:

QNetworkReply

put(request, data, context, slot)
参数:
返回类型:

QNetworkReply

put(request, data, context, slot)
参数:
返回类型:

QNetworkReply

put(request, data, context, slot)
参数:
返回类型:

QNetworkReply

put(request, data, context, slot)
参数:
返回类型:

QNetworkReply

sendCustomRequest(request, method, data, context, slot)#
参数:
返回类型:

QNetworkReply

sendCustomRequest(request, method, data, context, slot)
参数:
返回类型:

QNetworkReply

sendCustomRequest(request, method, data, context, slot)
参数:
返回类型:

QNetworkReply

sendCustomRequest(request, method, data)
参数:
返回类型:

QNetworkReply

sendCustomRequest(request, method, data)
参数:
返回类型:

QNetworkReply

sendCustomRequest(request, method, data)
参数:
返回类型:

QNetworkReply