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は、Network Programming APIに含まれます。
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
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 | - |
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
ヘッダーがセットされていない場合、Content-Type
ヘッダーはapplication/json
にセットされる。
QVariantMap **として扱われる。QJsonObject
QRestReply 、QNetworkRequestFactory 、QNetworkAccessManagerも参照のこと 。
メンバー関数ドキュメント
[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
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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)
これはオーバーロードされた関数である。
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor> > QNetworkReply *QRestAccessManager::head(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
request に基づいてHTTP HEAD
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
manager->patch(request, myData, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
あるいは、返されたQNetworkReply* オブジェクトのシグナルを使用することもできる。詳細はIssuing Network Requests and Handling Replies を参照のこと。
patch()
メソッドは常にdata パラメータを必要とする。以下のデータ型がサポートされている:
- QByteArray
- QJsonDocument *)
- QVariantMap **)
- QIODevice*
*)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
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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
を発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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リクエストを発行する。
以下に示すように、リクエストの完了を処理するために、オプションでcallback とcontext オブジェクトを提供することができる:
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.