QRestAccessManager Class

Der QRestAccessManager ist ein komfortabler Wrapper für QNetworkAccessManager. Mehr...

Kopfzeile: #include <QRestAccessManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Seit: Qt 6.7
Vererbt: QObject

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

QRestAccessManager(QNetworkAccessManager *manager, QObject *parent = nullptr)
virtual ~QRestAccessManager() override
QNetworkReply *deleteResource(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *get(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *get(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *get(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *get(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *head(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkAccessManager *networkAccessManager() const
QNetworkReply *patch(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *patch(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *patch(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *patch(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *post(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *post(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *put(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *put(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &method, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &method, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &method, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Detaillierte Beschreibung

QRestAccessManager ist ein komfortabler Wrapper auf QNetworkAccessManager. Er ergänzt Datentypen und HTTP-Methoden, die für typische RESTful-Client-Anwendungen nützlich sind.

Die üblichen Qt Networking-Funktionen sind über die direkte Konfiguration des Wrappers QNetworkAccessManager zugänglich. QRestAccessManager übernimmt nicht das Eigentum an der gewickelten QNetworkAccessManager.

QRestAccessManager und die zugehörigen QRestReply Klassen können nur in dem Thread verwendet werden, in dem sie sich befinden. Siehe QObject thread affinity für weitere Informationen.

Ausstellen von Netzwerkanfragen und Behandlung von Antworten

Netzwerkanfragen werden mit einem Funktionsaufruf eingeleitet, der der gewünschten HTTP-Methode entspricht, wie get() und post().

Verwendung von Signalen und Slots

Die Funktion gibt ein QNetworkReply* Objekt zurück, dessen Signale verwendet werden können, um die Beendigung der Anfrage in einer traditionellen Qt-Signale-und-Slots Weise zu verfolgen.

Hier ist ein Beispiel, wie Sie eine GET-Anfrage senden und die Antwort verarbeiten können:

QNetworkReply *reply = manager->get(request);
QObject::connect(reply, &QNetworkReply::finished, this, [reply]() {
    // The reply may be wrapped in the finish handler:
    QRestReply restReply(reply);
    if (restReply.isSuccess())
        // ...
});

Verwendung von Callbacks und Kontextobjekten

Die Funktionen nehmen auch ein Kontextobjekt vom Typ QObject (Unterklasse) und eine Callback-Funktion als Parameter. Der Callback nimmt einen QRestReply& als Parameter an. Der Callback kann eine beliebige aufrufbare Funktion sein, einschließlich einer Pointer-to-member-Funktion.

Diese Callbacks werden aufgerufen, wenn die Verarbeitung der Antwort abgeschlossen ist (auch für den Fall, dass die Verarbeitung aufgrund eines Fehlers beendet wurde).

Das Kontextobjekt kann nullptr sein, obwohl davon im Allgemeinen abgeraten wird. Die Verwendung eines gültigen Kontextobjekts gewährleistet, dass der Callback nicht aufgerufen wird, wenn das Kontextobjekt während der Verarbeitung der Anfrage zerstört wird. Verirrte Callbacks, die auf einen zerstörten Kontext zugreifen, sind eine Quelle für Fehlverhalten der Anwendung.

Hier ein Beispiel, wie Sie eine GET-Anfrage senden und die Antwort überprüfen können:

// With lambda
manager->get(request, this, [this](QRestReply &reply) {
    if (reply.isSuccess()) {
        // ...
    }
});
// With member function
manager->get(request, this, &MyClass::handleFinished);

Viele der Funktionen nehmen Daten entgegen, um sie an einen Server zu senden. Die Daten werden als zweiter Parameter nach der Anfrage übergeben.

Hier ein Beispiel, wie Sie eine POST-Anfrage senden und die Antwort überprüfen können:

QJsonDocument myJson;
// ...
manager->post(request, myJson, this, [this](QRestReply &reply) {
    if (!reply.isSuccess()) {
        // ...
    }
    if (std::optional json = reply.readJson()) {
        // use *json
    }
});

Die angegebene QRestReply& ist nur gültig, solange der Callback ausgeführt wird. Wenn Sie sie länger benötigen, können Sie sie entweder in eine andere QRestReply verschieben oder eine neue konstruieren und sie mit der QNetworkReply initialisieren (siehe QRestReply::networkReply()).

Unterstützte Datentypen

Die folgende Tabelle gibt einen Überblick über die Methoden und die unterstützten Datentypen. X bedeutet Unterstützung.

Datentypget()post()put()head()patch()deleteResource()sendCustomRequest()
Keine DatenX--X-X-
QByteArrayXXX-X-X
QJsonDocument *)XXX-X--
QVariantMap **)-XX-X--
QHttpMultiPart-XX---X
QIODeviceXXX-X-X

*) QJsonDocument wird im Format QJsonDocument::Compact gesendet, und die Kopfzeile Content-Type wird auf application/json gesetzt, wenn die Kopfzeile Content-Type nicht gesetzt wurde.

**) QVariantMap wird konvertiert in und behandelt als QJsonObject

Siehe auch QRestReply, QNetworkRequestFactory, und QNetworkAccessManager.

Dokumentation der Mitgliedsfunktionen

[explicit] QRestAccessManager::QRestAccessManager(QNetworkAccessManager *manager, QObject *parent = nullptr)

Konstruiert ein QRestAccessManager-Objekt und setzt parent als übergeordnetes Objekt und manager als das zugrunde liegende QNetworkAccessManager, das für die Kommunikation verwendet wird.

Siehe auch networkAccessManager().

[override virtual noexcept] QRestAccessManager::~QRestAccessManager()

Zerstört das Objekt QRestAccessManager.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::deleteResource(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine HTTP DELETE auf der Grundlage von request aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage bereitgestellt werden, wie unten dargestellt:

manager->deleteResource(request, this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

deleteResource() request unterstützt nicht die Bereitstellung von Daten.

Siehe auch QRestReply.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine HTTP GET auf der Grundlage von request aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage bereitgestellt werden, wie unten dargestellt:

manager->get(request, this, [this](QRestReply &reply) {
    if (!reply.isSuccess())
        // handle error
    if (std::optional json = reply.readJson())
        // use *json
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

Siehe auch QRestReply.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine HTTP GET auf der Grundlage von request und der bereitgestellten data aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage wie unten dargestellt bereitgestellt werden:

manager->get(request, myData, this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

Siehe auch QRestReply.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

Stellt eine HTTP HEAD auf der Grundlage von request aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage bereitgestellt werden, wie unten dargestellt:

manager->head(request, this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

head() request unterstützt nicht die Bereitstellung von Daten.

Siehe auch QRestReply.

QNetworkAccessManager *QRestAccessManager::networkAccessManager() const

Gibt die zugrunde liegende QNetworkAccessManager Instanz zurück.

Siehe auch QNetworkAccessManager.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine HTTP PATCH auf der Grundlage von request aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage bereitgestellt werden, wie unten dargestellt:

manager->patch(request, myData, this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

Die Methode patch() benötigt immer den Parameter data. Die folgenden Datentypen werden unterstützt:

*) Wird im Format QJsonDocument::Compact gesendet, und die Kopfzeile Content-Type wird auf application/json gesetzt, wenn die Kopfzeile Content-Type nicht gesetzt wurde **) QVariantMap wird in eine Datei konvertiert und als QJsonObject

Siehe auch QRestReply.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine HTTP POST auf der Grundlage von request aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage bereitgestellt werden, wie unten dargestellt:

manager->post(request, myData, this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

Die Methode post() benötigt immer den Parameter data. Die folgenden Datentypen werden unterstützt:

*) Wird im Format QJsonDocument::Compact gesendet, und die Kopfzeile Content-Type wird auf application/json gesetzt, wenn die Kopfzeile Content-Type nicht gesetzt wurde **) QVariantMap wird in eine E-Mail umgewandelt und als QJsonObject

Siehe auch QRestReply.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine HTTP PUT auf der Grundlage von request aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage bereitgestellt werden, wie unten dargestellt:

manager->put(request, myData, this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

Die Methode put() benötigt immer den Parameter data. Die folgenden Datentypen werden unterstützt:

*) Wird im Format QJsonDocument::Compact gesendet, und die Kopfzeile Content-Type wird auf application/json gesetzt, wenn die Kopfzeile Content-Type nicht gesetzt wurde **) QVariantMap wird in eine E-Mail umgewandelt und als QJsonObject

Siehe auch QRestReply.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &method, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Stellt eine request basierte HTTP-Anfrage mit dem benutzerdefinierten method und dem bereitgestellten data aus.

Die optionalen Objekte callback und context können für die Bearbeitung des Abschlusses der Anfrage wie unten dargestellt bereitgestellt werden:

manager->sendCustomRequest(request, "MYMETHOD",  myData,  this, [this](QRestReply &reply) {
    if (reply.isSuccess())
        // ...
});

Alternativ können auch die Signale des zurückgegebenen QNetworkReply* Objekts verwendet werden. Für weitere Informationen siehe Issuing Network Requests and Handling Replies.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &method, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &method, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Dies ist eine überladene Funktion.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.