QRestAccessManager Class
El QRestAccessManager es una envoltura de conveniencia para QNetworkAccessManager. Más...
| Cabecera: | #include <QRestAccessManager> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Desde: | Qt 6.7 |
| Hereda: | QObject |
- Lista de todos los miembros, incluyendo los heredados
- QRestAccessManager es parte de la API de Programación de Red.
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| 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) |
Descripción Detallada
QRestAccessManager es una envoltura de conveniencia en la parte superior de QNetworkAccessManager. Modifica los tipos de datos y métodos HTTP que son útiles para las típicas aplicaciones cliente RESTful.
Las características de red habituales de Qt son accesibles configurando directamente la envoltura QNetworkAccessManager. QRestAccessManager no se apropia de QNetworkAccessManager.
QRestAccessManager y las clases QRestReply relacionadas sólo pueden usarse en el hilo en el que viven. Ver QObject thread affinity para más información.
Emisión de peticiones de red y gestión de respuestas
Las peticiones de red se inician con una llamada a la función correspondiente al método HTTP deseado, como get() y post().
Uso de señales y ranuras
La función devuelve un objeto QNetworkReply*, cuyas señales pueden usarse para seguir la finalización de la petición de una forma tradicional Qt-signals-and-slots.
He aquí un ejemplo de cómo se podría enviar una petición GET y manejar la respuesta:
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()) // ... });
Usando Callbacks y Objetos de Contexto
Las funciones también toman como parámetros un objeto de contexto de tipo QObject (subclase) y una función callback. La devolución de llamada toma como parámetro un QRestReply&. El callback puede ser cualquier callable, incluyendo un puntero-a-función-miembro.
Estas retrollamadas se invocan cuando la respuesta ha terminado de procesarse (también en el caso de que el procesamiento haya terminado debido a un error).
El objeto de contexto puede ser nullptr, aunque, en general, se desaconseja. Utilizar un objeto de contexto válido garantiza que si el objeto de contexto se destruye durante el procesamiento de la petición, no se llamará a la llamada de retorno. Las llamadas de retorno que acceden a un contexto destruido son una fuente de mal comportamiento de la aplicación.
He aquí un ejemplo de cómo enviar una petición GET y comprobar la respuesta:
// With lambda manager->get(request, this, [this](QRestReply &reply) { if (reply.isSuccess()) { // ... } }); // With member function manager->get(request, this, &MyClass::handleFinished);
Muchas de las funciones toman datos para enviarlos a un servidor. Los datos se suministran como segundo parámetro después de la petición.
He aquí un ejemplo de cómo enviar una solicitud POST y comprobar la respuesta:
QJsonDocument myJson; // ... manager->post(request, myJson, this, [this](QRestReply &reply) { if (!reply.isSuccess()) { // ... } if (std::optional json = reply.readJson()) { // use *json } });
La dirección QRestReply& proporcionada sólo es válida mientras se ejecuta la llamada de retorno. Si lo necesita durante más tiempo, puede moverlo a otro QRestReply, o construir uno nuevo e inicializarlo con el QNetworkReply (véase QRestReply::networkReply()).
Tipos de datos admitidos
La siguiente tabla resume los métodos y los tipos de datos soportados. X significa soporte.
| Tipo de datos | get() | post() | put() | head() | patch() | deleteResource() | sendCustomRequest() |
|---|---|---|---|---|---|---|---|
| Sin datos | 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 se envía en formato QJsonDocument::Compact, y la cabecera Content-Type se establece en application/json si no se ha establecido la cabecera Content-Type
**) QVariantMap se convierte a y se trata como un QJsonObject
Véase también QRestReply, QNetworkRequestFactory, y QNetworkAccessManager.
Documentación de las funciones miembro
[explicit] QRestAccessManager::QRestAccessManager(QNetworkAccessManager *manager, QObject *parent = nullptr)
Construye un objeto QRestAccessManager y establece parent como el objeto padre, y manager como el QNetworkAccessManager subyacente que se utiliza para la comunicación.
Véase también networkAccessManager().
[override virtual noexcept] QRestAccessManager::~QRestAccessManager()
Destruye el objeto QRestAccessManager.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::deleteResource(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Emite un HTTP DELETE basado en request.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->deleteResource(request, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
deleteResource() request no permite proporcionar datos.
Véase también QRestReply.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Emite un HTTP GET basado en request.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->get(request, this, [this](QRestReply &reply) { if (!reply.isSuccess()) // handle error if (std::optional json = reply.readJson()) // use *json });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
Véase también 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)
Emite un HTTP GET basado en request y el data proporcionado.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->get(request, myData, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
Véase también QRestReply.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::get(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::head(const QNetworkRequest &request, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Emite un HTTP HEAD basado en request.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->head(request, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
head() request no permite proporcionar datos.
Véase también QRestReply.
QNetworkAccessManager *QRestAccessManager::networkAccessManager() const
Devuelve la instancia QNetworkAccessManager subyacente.
Véase también 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)
Emite un HTTP PATCH basado en request.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->patch(request, myData, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
El método patch() siempre requiere el parámetro data. Se admiten los siguientes tipos de datos:
- QByteArray
- QJsonDocument *)
- QVariantMap **)
- QIODevice*
*) Enviado en formato QJsonDocument::Compact, y la cabecera Content-Type se establece en application/json si no se ha establecido la cabecera Content-Type **) QVariantMap se convierte y se trata como un QJsonObject
Véase también QRestReply.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Emite un HTTP POST basado en request.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->post(request, myData, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente, se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
El método post() siempre requiere el parámetro data. Se admiten los siguientes tipos de datos:
*) Enviado en formato QJsonDocument::Compact, y la cabecera Content-Type se establece en application/json si la cabecera Content-Type no estaba establecida **) QVariantMap se convierte en y se trata como un QJsonObject
Véase también QRestReply.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, const QJsonDocument &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Emite un HTTP PUT basado en request.
Los objetos opcionales callback y context pueden ser proporcionados para manejar la finalización de la solicitud como se ilustra a continuación:
manager->put(request, myData, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase Issuing Network Requests and Handling Replies.
El método put() siempre requiere el parámetro data. Se admiten los siguientes tipos de datos:
*) Enviado en formato QJsonDocument::Compact, y la cabecera Content-Type se establece en application/json si la cabecera Content-Type no estaba establecida **) QVariantMap se convierte en y se trata como un QJsonObject
Véase también QRestReply.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, QIODevice *data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, const QByteArray &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
template <typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(const QNetworkRequest &request, const QVariantMap &data, const QRestAccessManager::ContextTypeForFunctor<Functor> *context, Functor &&callback)
Se trata de una función sobrecargada.
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)
Emite una solicitud HTTP basada en request con method personalizado y data proporcionado.
El opcional callback y context objeto puede ser proporcionado para el manejo de la finalización de la solicitud como se ilustra a continuación:
manager->sendCustomRequest(request, "MYMETHOD", myData, this, [this](QRestReply &reply) { if (reply.isSuccess()) // ... });
Alternativamente se pueden utilizar las señales del objeto QNetworkReply* devuelto. Para más información, véase 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)
Se trata de una función sobrecargada.
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)
Se trata de una función sobrecargada.
© 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.