QRestAccessManager Class

QRestAccessManagerは、QNetworkAccessManager の便利なラッパーです。さらに...

ヘッダー #include <QRestAccessManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
以来:Qt 6.7
継承: QObject

注意:このクラスの関数はすべてリエントラントです。

パブリック関数

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)

詳細説明

QRestAccessManagerは、QNetworkAccessManager 上の便利なラッパーです。 典型的なRESTfulクライアントアプリケーションに有用なデータ型とHTTPメソッドを修正します。

ラップされたQNetworkAccessManager を直接設定することで、通常の Qt ネットワーク機能にアクセスできます。QRestAccessManager はラップされたQNetworkAccessManager の所有権を取りません。

QRestAccessManagerと関連するQRestReply クラスは、そのスレッド内でのみ使用できます。詳細はQObject thread affinity を参照してください。

ネットワーク・リクエストの発行と応答の処理

ネットワーク・リクエストは、get()post() など、目的の HTTP メソッドに対応する関数呼び出しで開始されます。

シグナルとスロットの使用

この関数はQNetworkReply* オブジェクトを返し、そのシグナルは伝統的な Qt-signals-and-slots の方法でリクエストの完了をフォローするために使用することができます。

以下は GET リクエストを送信し、レスポンスを処理する例です:

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

コールバックとコンテキストオブジェクトの使用

この関数は、QObject (サブクラス)型のコンテキストオブジェクトとコールバック関数をパラメータとして受け取ります。コールバックは、QRestReply& をパラメータとして受け取ります。コールバックは、メンバ関数へのポインタを含む、任意の呼び出し可能な関数にすることができます。

これらのコールバックは、リプライの処理が終了したときに呼び出される(エラーが発生して処理が終了した場合も同様)。

コンテキストオブジェクトはnullptr 、一般的には推奨されない。有効なコンテキストオブジェクトを使うことで、リクエスト処理中に コンテキストオブジェクトが破棄された場合、コールバックが呼び出されない ことを保証する。破棄されたコンテキストにアクセスする野良コールバックは、 アプリケーションの誤動作の原因になります。

以下は、GETリクエストを送信してレスポンスを確認する例です:

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

関数の多くは、サーバーに送信するデータを受け取ります。データはリクエストの後の2番目のパラメータとして提供されます。

POSTリクエストを送信してレスポンスを確認する例を示します:

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

提供されたQRestReply& は、コールバックが実行されている間だけ有効です。より長い時間必要な場合は、別のQRestReply に移動するか、新しいものを作成してQNetworkReply で初期化します (QRestReply::networkReply() を参照)。

サポートされるデータ型

以下の表は、メソッドとサポートされるデータ型をまとめたものである。X はサポートを意味する。

データ型get()post()put()head()patch()deleteResource()sendCustomRequest()
データなしX--X-X-
QByteArrayXXX-X-X
QJsonDocument *)XXX-X--
QVariantMap **)-XX-X--
QHttpMultiPart-XX---X
QIODeviceXXX-X-X

*)QJsonDocumentQJsonDocument::Compact フォーマットで送信され、Content-Type ヘッダーがセットされていない場合、Content-Type ヘッダーはapplication/json にセットされる。

QVariantMap **として扱われる。QJsonObject

QRestReplyQNetworkRequestFactoryQNetworkAccessManagerも参照のこと

メンバー関数ドキュメント

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

QRestAccessManager オブジェクトを構築し、parent を親オブジェクトとして、manager を通信に使用する基盤QNetworkAccessManager として設定します。

networkAccessManager()も参照してください

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

QRestAccessManager オブジェクトを破棄する。

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

request に基づいてHTTP DELETE を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

deleteResource() リクエストはデータの提供をサポートしていない。

QRestReplyも参照のこと

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

request に基づいてHTTP GET を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

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)

request と提供されたdata に基づいてHTTP GET を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

QRestReplyも参照のこと

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

request に基づいてHTTP HEAD を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

head() リクエストはデータの提供をサポートしていない。

QRestReplyも参照のこと

QNetworkAccessManager *QRestAccessManager::networkAccessManager() const

基礎となるQNetworkAccessManager インスタンスを返します。

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)

request に基づいてHTTP PATCH を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

patch() メソッドは常にdata パラメータを必要とする。以下のデータ型がサポートされている:

*)QJsonDocument::Compact フォーマットで送信され、Content-Type ヘッダが設定されていない場合、Content-Type ヘッダはapplication/json に設定される **)QVariantMap は、 に変換され、 として扱われる。QJsonObject

QRestReplyも参照のこと

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

request に基づいてHTTP POST を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

post() メソッドは常にdata パラメータを必要とする。以下のデータ型がサポートされている:

*)QJsonDocument::Compact 形式で送信され、Content-Type ヘッダが設定されていない場合、Content-Type ヘッダはapplication/json に設定される **)QVariantMap に変換されて扱われる。QJsonObject

QRestReplyも参照のこと

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

request に基づいてHTTP PUT を発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。

put() メソッドは常にdata パラメータを必要とする。以下のデータ型がサポートされている:

*)QJsonDocument::Compact フォーマットで送信され、Content-Type ヘッダが設定されていない場合、Content-Type ヘッダはapplication/json に設定される **)QVariantMap に変換されて扱われる。QJsonObject

QRestReplyも参照のこと

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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

これはオーバーロードされた関数である。

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)

カスタムmethod と提供されたdata を使って、request ベースのHTTPリクエストを発行する。

以下に示すように、リクエストの完了を処理するために、オプションでcallbackcontext オブジェクトを提供することができる:

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

あるいは、返されたQNetworkReply* オブジェクトのシグナルを使うこともできる。詳細は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)

これはオーバーロードされた関数である。

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)

これはオーバーロードされた関数である。

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