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 신호 및 슬롯 방식으로 요청 완료를 추적하는 데 사용할 수 있습니다.

다음은 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);

많은 함수가 서버로 전송할 데이터를 받습니다. 데이터는 요청 뒤에 두 번째 매개변수로 제공됩니다.

다음은 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

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 을 발행합니다.

아래 그림과 같이 요청 완료를 처리하기 위해 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 을 기반으로 HTTP GET 을 발행하고 data 을 제공합니다.

아래 그림과 같이 요청 완료를 처리하기 위해 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.