- class QRestAccessManager#
《QRestAccessManager》(Python类) 是对 `
QNetworkAccessManager
` 的便捷包装。了解更多…自 6.7 版本新增。
概述#
方法#
def
__init__()
def
deleteResource()
def
get()
def
head()
def
patch()
def
post()
def
put()
注意事项
这份文档可能包含自动从 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
X
X
X
QIODevice
X
X
X
X
X
*) QJsonDocument 以 QJsonDocument::Compact 格式发送,如果未设置
Content-Type
报头,则将其设置为application/json
**) QVariantMap 转换为并被视为 QJsonObject
- __init__(manager[, parent=None])#
- 参数:
manager -
QNetworkAccessManager
parent -
QObject
构造一个
QRestAccessManager
对象,并将parent
设置为父对象,将manager
设置为用于通信的底层QNetworkAccessManager
- deleteResource(request, context, slot)#
- 参数:
request -
QNetworkRequest
context -
QObject
slot -
PyCallable
- 返回类型:
- deleteResource(request)
- 参数:
request -
QNetworkRequest
- 返回类型:
- get(request, data, context, slot)#
- 参数:
request -
QNetworkRequest
data -
QByteArray
context -
QObject
slot -
PyCallable
- 返回类型:
- get(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QIODevice
context -
QObject
slot -
PyCallable
- 返回类型:
- get(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
context -
QObject
slot -
PyCallable
- 返回类型:
- get(request, context, slot)
- 参数:
request -
QNetworkRequest
context -
QObject
slot -
PyCallable
- 返回类型:
- get(request)
- 参数:
request -
QNetworkRequest
- 返回类型:
- get(request, data)
- 参数:
request -
QNetworkRequest
data –
QIODevice
- 返回类型:
- get(request, data)
- 参数:
request -
QNetworkRequest
data -
QByteArray
- 返回类型:
- get(request, data)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
- 返回类型:
- head(request, context, slot)#
- 参数:
request -
QNetworkRequest
context -
QObject
slot -
PyCallable
- 返回类型:
- head(request)
- 参数:
request -
QNetworkRequest
- 返回类型:
- networkAccessManager()#
- 返回类型:
返回底层的
QNetworkAccessManager
实例。- patch(request, data, context, slot)#
- 参数:
request -
QNetworkRequest
data -
QByteArray
context -
QObject
slot -
PyCallable
- 返回类型:
- patch(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QIODevice
context -
QObject
slot -
PyCallable
- 返回类型:
- patch(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
context -
QObject
slot -
PyCallable
- 返回类型:
- patch(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data – 键类型为 QString,值类型为 QVariant 的字典。
context -
QObject
slot -
PyCallable
- 返回类型:
- patch(request, data)
- 参数:
request -
QNetworkRequest
data –
QIODevice
- 返回类型:
- patch(request, data)
- 参数:
request -
QNetworkRequest
data -
QByteArray
- 返回类型:
- patch(request, data)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
- 返回类型:
- patch(request, data)
- 参数:
request -
QNetworkRequest
data – 键类型为 QString,值类型为 QVariant 的字典。
- 返回类型:
- post(request, data)#
- 参数:
request -
QNetworkRequest
data – 键类型为 QString,值类型为 QVariant 的字典。
- 返回类型:
- post(request, data)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
- 返回类型:
- post(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QIODevice
context -
QObject
slot -
PyCallable
- 返回类型:
- post(request, data)
- 参数:
request -
QNetworkRequest
data -
QByteArray
- 返回类型:
- post(request, data)
- 参数:
request -
QNetworkRequest
data –
QIODevice
- 返回类型:
- post(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data – 键类型为 QString,值类型为 QVariant 的字典。
context -
QObject
slot -
PyCallable
- 返回类型:
- post(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
context -
QObject
slot -
PyCallable
- 返回类型:
- post(request, data, context, slot)
- 参数:
request -
QNetworkRequest
数据 -
QHttpMultiPart
context -
QObject
slot -
PyCallable
- 返回类型:
- post(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data -
QByteArray
context -
QObject
slot -
PyCallable
- 返回类型:
- post(request, data)
- 参数:
request -
QNetworkRequest
数据 -
QHttpMultiPart
- 返回类型:
- put(request, data)#
- 参数:
request -
QNetworkRequest
数据 -
QHttpMultiPart
- 返回类型:
- put(request, data)
- 参数:
request -
QNetworkRequest
data – 键类型为 QString,值类型为 QVariant 的字典。
- 返回类型:
- put(request, data)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
- 返回类型:
- put(request, data)
- 参数:
request -
QNetworkRequest
data -
QByteArray
- 返回类型:
- put(request, data)
- 参数:
request -
QNetworkRequest
data –
QIODevice
- 返回类型:
- put(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data – 键类型为 QString,值类型为 QVariant 的字典。
context -
QObject
slot -
PyCallable
- 返回类型:
- put(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QJsonDocument
context -
QObject
slot -
PyCallable
- 返回类型:
- put(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data –
QIODevice
context -
QObject
slot -
PyCallable
- 返回类型:
- put(request, data, context, slot)
- 参数:
request -
QNetworkRequest
数据 -
QHttpMultiPart
context -
QObject
slot -
PyCallable
- 返回类型:
- put(request, data, context, slot)
- 参数:
request -
QNetworkRequest
data -
QByteArray
context -
QObject
slot -
PyCallable
- 返回类型:
- sendCustomRequest(request, method, data, context, slot)#
- 参数:
request -
QNetworkRequest
方法 –
QByteArray
data -
QByteArray
context -
QObject
slot -
PyCallable
- 返回类型:
- sendCustomRequest(request, method, data, context, slot)
- 参数:
request -
QNetworkRequest
方法 –
QByteArray
数据 -
QHttpMultiPart
context -
QObject
slot -
PyCallable
- 返回类型:
- sendCustomRequest(request, method, data, context, slot)
- 参数:
request -
QNetworkRequest
方法 –
QByteArray
data –
QIODevice
context -
QObject
slot -
PyCallable
- 返回类型:
- sendCustomRequest(request, method, data)
- 参数:
request -
QNetworkRequest
方法 –
QByteArray
数据 -
QHttpMultiPart
- 返回类型:
- sendCustomRequest(request, method, data)
- 参数:
request -
QNetworkRequest
方法 –
QByteArray
data –
QIODevice
- 返回类型:
- sendCustomRequest(request, method, data)
- 参数:
request -
QNetworkRequest
方法 –
QByteArray
data -
QByteArray
- 返回类型: