Sur cette page

QRestAccessManager Class

Le QRestAccessManager est un wrapper de commodité pour QNetworkAccessManager. Plus...

En-tête : #include <QRestAccessManager>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network
Depuis : Qt 6.7
Hérite : QObject

Note : Toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

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)

Description détaillée

QRestAccessManager est une enveloppe de commodité au-dessus de QNetworkAccessManager. Il modifie les types de données et les méthodes HTTP qui sont utiles pour les applications client RESTful typiques.

Les fonctionnalités habituelles de Qt Network sont accessibles en configurant directement l'adresse QNetworkAccessManager. QRestAccessManager ne prend pas possession de l'enveloppe QNetworkAccessManager.

QRestAccessManager et les classes QRestReply associées ne peuvent être utilisés que dans le thread dans lequel ils se trouvent. Voir QObject thread affinity pour plus d'informations.

Émission de requêtes réseau et traitement des réponses

Les demandes de réseau sont initiées par un appel de fonction correspondant à la méthode HTTP souhaitée, telle que get() et post().

Utilisation de signaux et de créneaux

La fonction renvoie un objet QNetworkReply*, dont les signaux peuvent être utilisés pour suivre l'achèvement de la requête de manière traditionnelle avec les signaux et les slots de Qt.

Voici un exemple de la manière dont vous pouvez envoyer une requête GET et gérer la réponse :

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())
        // ...
});

Utilisation de rappels et d'objets contextuels

Les fonctions prennent également en paramètre un objet contextuel de type QObject (sous-classe) et une fonction de rappel. La fonction de rappel prend en paramètre un objet QRestReply&. La fonction de rappel peut être n'importe quel objet appelable, y compris un pointeur sur une fonction membre.

Ces rappels sont invoqués lorsque le traitement de la réponse est terminé (également dans le cas où le traitement s'est terminé en raison d'une erreur).

L'objet contextuel peut être nullptr, bien que cela soit généralement déconseillé. L'utilisation d'un objet de contexte valide garantit que si l'objet de contexte est détruit pendant le traitement de la demande, le rappel ne sera pas appelé. Les rappels errants qui accèdent à un contexte détruit sont une source de mauvais comportement de l'application.

Voici un exemple de la manière dont vous pouvez envoyer une requête GET et vérifier la réponse :

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

De nombreuses fonctions collectent des données pour les envoyer à un serveur. Les données sont fournies en tant que deuxième paramètre après la requête.

Voici un exemple d'envoi d'une requête POST et de vérification de la réponse :

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

L'adresse QRestReply& fournie n'est valable que pendant l'exécution du rappel. Si vous en avez besoin plus longtemps, vous pouvez soit le déplacer vers un autre QRestReply, soit en construire un nouveau et l'initialiser avec le QNetworkReply (voir QRestReply::networkReply()).

Types de données pris en charge

Le tableau suivant résume les méthodes et les types de données pris en charge. X signifie prise en charge.

Type de donnéesget()post()put()head()patch()deleteResource()sendCustomRequest()
Pas de donnéesX--X-X-
QByteArrayXXX-X-X
QJsonDocument *)XXX-X--
QVariantMap **)-XX-X--
QHttpMultiPart-XX---X
QIODeviceXXX-X-X

*) QJsonDocument est envoyé au format QJsonDocument::Compact, et l'en-tête Content-Type est remplacé par application/json si l'en-tête Content-Type n'a pas été défini.

**) QVariantMap est converti et traité comme un message de type QJsonObject

Voir aussi QRestReply, QNetworkRequestFactory, et QNetworkAccessManager.

Documentation des fonctions membres

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

Construit un objet QRestAccessManager et définit parent comme objet parent et manager comme QNetworkAccessManager sous-jacent utilisé pour la communication.

Voir aussi networkAccessManager().

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

Détruit l'objet QRestAccessManager.

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

émet un HTTP DELETE sur la base du request.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

deleteResource() La requête ne permet pas de fournir des données.

Voir également QRestReply.

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

émet un HTTP GET sur la base du request.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

Voir également 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)

émet un message HTTP GET basé sur request et data.

Les objets optionnels callback et context peuvent être fournis pour gérer la finalisation de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

Voir également QRestReply.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

émet un HTTP HEAD sur la base du request.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

head() La requête ne permet pas de fournir des données.

Voir également QRestReply.

QNetworkAccessManager *QRestAccessManager::networkAccessManager() const

Renvoie l'instance QNetworkAccessManager sous-jacente.

Voir aussi 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)

émet un HTTP PATCH sur la base du request.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

La méthode patch() nécessite toujours le paramètre data. Les types de données suivants sont pris en charge :

*) Envoyé au format QJsonDocument::Compact, et l'en-tête Content-Type est mis à application/json si l'en-tête Content-Type n'a pas été mis **) QVariantMap est converti et traité comme un type de données. QJsonObject

Voir aussi QRestReply.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

émet un HTTP POST sur la base du request.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

La méthode post() nécessite toujours le paramètre data. Les types de données suivants sont pris en charge :

*) Envoyé au format QJsonDocument::Compact, et l'en-tête Content-Type est mis à application/json si l'en-tête Content-Type n'a pas été mis **) QVariantMap est converti et traité comme un message d'erreur. QJsonObject

Voir aussi QRestReply.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

émet un HTTP PUT sur la base du request.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir Issuing Network Requests and Handling Replies.

La méthode put() nécessite toujours le paramètre data. Les types de données suivants sont pris en charge :

*) Envoyé au format QJsonDocument::Compact, et l'en-tête Content-Type est mis à application/json si l'en-tête Content-Type n'a pas été mis **) QVariantMap est converti et traité comme un message d'erreur. QJsonObject

Voir aussi QRestReply.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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

Il s'agit d'une fonction surchargée.

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)

Emet une requête HTTP basée sur request avec method personnalisé et data fourni.

Les objets optionnels callback et context peuvent être fournis pour gérer l'achèvement de la demande, comme illustré ci-dessous :

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

Il est également possible d'utiliser les signaux de l'objet QNetworkReply* renvoyé. Pour plus d'informations, voir 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)

Il s'agit d'une fonction surchargée.

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)

Il s'agit d'une fonction surchargée.

© 2026 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.