PySide6.QtNetwork.QRestAccessManager

class QRestAccessManager

QRestAccessManagerQNetworkAccessManager 的一个便捷封装。更多

PySide6.QtNetwork.QRestAccessManager 的继承图

在版本6.7中添加。

概要

方法

注意

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

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QRestAccessManagerQNetworkAccessManager 上的一个便捷封装。它补充了对于典型 RESTful 客户端应用程序有用的数据类型和 HTTP 方法。

通常的Qt网络功能可以通过直接配置封装的QNetworkAccessManager来访问。QRestAccessManager不会接管封装的QNetworkAccessManager的所有权。

QRestAccessManager 和相关的 QRestReply 类只能在它们所在的线程中使用。有关更多信息,请参阅 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])
Parameters:

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

另请参阅

networkAccessManager()

deleteResource(request)
Parameters:

请求QNetworkRequest

Return type:

QNetworkReply

deleteResource(request, context, slot)
Parameters:
Return type:

QNetworkReply

get(request)
Parameters:

请求QNetworkRequest

Return type:

QNetworkReply

get(request, data)
Parameters:
Return type:

QNetworkReply

get(request, data)
Parameters:
Return type:

QNetworkReply

get(request, data)
Parameters:
Return type:

QNetworkReply

get(request, context, slot)
Parameters:
Return type:

QNetworkReply

get(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

get(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

get(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

head(request)
Parameters:

请求QNetworkRequest

Return type:

QNetworkReply

head(request, context, slot)
Parameters:
Return type:

QNetworkReply

networkAccessManager()
Return type:

QNetworkAccessManager

返回底层的 QNetworkAccessManager 实例。

另请参阅

QNetworkAccessManager

patch(request, data)
Parameters:
Return type:

QNetworkReply

patch(request, data)
Parameters:
Return type:

QNetworkReply

patch(request, data)
Parameters:
Return type:

QNetworkReply

patch(request, data)
Parameters:
  • 请求QNetworkRequest

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

Return type:

QNetworkReply

patch(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

patch(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

patch(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

patch(request, data, context, slot)
Parameters:
  • 请求QNetworkRequest

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

  • contextQObject

  • slotPyCallable

Return type:

QNetworkReply

post(request, data)
Parameters:
Return type:

QNetworkReply

post(request, data)
Parameters:
Return type:

QNetworkReply

post(request, data)
Parameters:
Return type:

QNetworkReply

post(request, data)
Parameters:
Return type:

QNetworkReply

post(request, data)
Parameters:
  • 请求QNetworkRequest

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

Return type:

QNetworkReply

post(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

post(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

post(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

post(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

post(request, data, context, slot)
Parameters:
  • 请求QNetworkRequest

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

  • contextQObject

  • slotPyCallable

Return type:

QNetworkReply

put(request, data)
Parameters:
Return type:

QNetworkReply

put(request, data)
Parameters:
Return type:

QNetworkReply

put(request, data)
Parameters:
Return type:

QNetworkReply

put(request, data)
Parameters:
Return type:

QNetworkReply

put(request, data)
Parameters:
  • 请求QNetworkRequest

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

Return type:

QNetworkReply

put(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

put(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

put(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

put(request, data, context, slot)
Parameters:
Return type:

QNetworkReply

put(request, data, context, slot)
Parameters:
  • 请求QNetworkRequest

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

  • contextQObject

  • slotPyCallable

Return type:

QNetworkReply

sendCustomRequest(request, method, data)
Parameters:
Return type:

QNetworkReply

sendCustomRequest(request, method, data)
Parameters:
Return type:

QNetworkReply

sendCustomRequest(request, method, data)
Parameters:
Return type:

QNetworkReply

sendCustomRequest(request, method, data, context, slot)
Parameters:
Return type:

QNetworkReply

sendCustomRequest(request, method, data, context, slot)
Parameters:
Return type:

QNetworkReply

sendCustomRequest(request, method, data, context, slot)
Parameters:
Return type:

QNetworkReply