QRestAccessManager Class
QRestAccessManagerは、QNetworkAccessManager の便利なラッパーです。詳細...
Header: | #include <QRestAccessManager> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Since: | Qt 6.7 |
Inherits: | 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)
これはオーバーロードされた関数です。
ここに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。