QAbstractHttpServer Class

HTTP サーバを実装するためにサブクラス化する API。詳細...

Header: #include <QAbstractHttpServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
qmake: QT += httpserver
Since: Qt 6.4
Inherits: QObject
Inherited By:

QHttpServer

Status: Technical Preview

パブリック関数

QAbstractHttpServer(QObject *parent = nullptr)
virtual ~QAbstractHttpServer() override
(since 6.8) void addWebSocketUpgradeVerifier(const typename QtPrivate::ContextTypeForFunctor<Handler>::ContextType *context, Handler &&func)
bool bind(QLocalServer *server)
bool bind(QTcpServer *server)
bool hasPendingWebSocketConnections() const
(since 6.8) QHttp2Configuration http2Configuration() const
QList<QLocalServer *> localServers() const
std::unique_ptr<QWebSocket> nextPendingWebSocketConnection()
QList<quint16> serverPorts() const
QList<QTcpServer *> servers() const
(since 6.8) void setHttp2Configuration(const QHttp2Configuration &configuration)

シグナル

保護された関数

virtual bool handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder) = 0
virtual void missingHandler(const QHttpServerRequest &request, QHttpServerResponder &responder) = 0

詳細説明

このクラスをサブクラス化し、handleRequest() およびmissingHandler() をオーバーライドして HTTP サーバーを作成します。bind() を使用して、サーバーへのすべての着信コネクションのリッスンを開始します。

HTTP サーバを実装するための高レベル API についてはQHttpServer を参照してください。

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

[explicit] QAbstractHttpServer::QAbstractHttpServer(QObject *parent = nullptr)

QAbstractHttpServer のインスタンスをparent を親として生成します。

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

QAbstractHttpServer のインスタンスを破棄します。

[since 6.8] template <typename Handler, QAbstractHttpServer::if_compatible_callable<Handler> = true> void QAbstractHttpServer::addWebSocketUpgradeVerifier(const typename QtPrivate::ContextTypeForFunctor<Handler>::ContextType *context, Handler &&func)

コンテキストオブジェクトcontext を使用して、着信 WebSocket アップグレードを検証するコールバック関数func を追加します。登録されているコールバック関数の少なくとも 1 つがAccept を返し、Deny を返すハンドラがその前に実行されていなければ、アップグレードの試みは成功します。ハンドラが1つも登録されていないか、すべてがPassToNext を返す場合、missingHandler() が呼び出される。コールバック関数は、登録された順に実行される。コールバック関数は、addWebSocketUpgradeVerifier() を呼び出すことはできません。

注: コールバック関数が登録されていない場合、WebSocket のアップグレードは失敗します。

注: このオーバーロードは、コールバック関数が引数としてconst QHttpServerRequest & を取り、QHttpServerWebSocketUpgradeResponse を返す場合にのみ、オーバーロード解決に参加します。

server.addWebSocketUpgradeVerifier(
        &server, [](const QHttpServerRequest &request) {
            if (request.url().path() == "/allowed"_L1)
                return QHttpServerWebSocketUpgradeResponse::accept();
            else
                return QHttpServerWebSocketUpgradeResponse::passToNext();
        });

この関数は Qt 6.8 で導入されました。

QHttpServerRequest,QHttpServerWebSocketUpgradeResponse,hasPendingWebSocketConnections(),nextPendingWebSocketConnection(),newWebSocketConnection(),missingHandler()も参照してください

bool QAbstractHttpServer::bind(QLocalServer *server)

HTTP サーバを、転送が行われるQLocalServer server にバインドします。複数の接続を処理するために、server の異なるインスタンスでこの関数を複数回呼び出すことが可能です。

この関数を呼び出すと、すべての新しい接続がHTTPサーバーによって処理され、転送されます。

この関数を呼び出す前に、serverQLocalServer::listen() を呼び出すのはユーザーの責任である。server がリッスンしていない場合、何も起こらず、false が返されます。

server がnullptrの場合、falseが返される。

成功すると、server がこの HTTP サーバーの親になり、true が返されます。

QLocalServer およびQLocalServer::listen()も参照

bool QAbstractHttpServer::bind(QTcpServer *server)

HTTP サーバを、送信が行われる TCPserver にバインドします。複数の接続とポート、例えばSSL接続と非暗号化接続を処理するために、異なるTCPserver のインスタンスでこの関数を複数回呼び出すことが可能です。

この関数を呼び出すと、すべての新しい接続がHTTPサーバによって処理され、転送されます。

この関数を呼び出す前に、serverQTcpServer::listen() を呼び出すのはユーザーの責任である。server がリッスンしていない場合、何も起こらずfalse が返される。

成功すると、server がこのHTTPサーバーの親となり、true が返される。

HTTP 2を使用するには、QSslConfiguration::setAllowedNextProtocols() を引数{ QSslConfiguration::ALPNProtocolHTTP2 } で呼び出したQSslServer にバインドする。

QTcpServerQTcpServer::listen()、QSslConfiguration::setAllowedNextProtocols()も参照

[pure virtual protected] bool QAbstractHttpServer::handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder)

この関数をオーバーライドして、request を調べ、responder に適切なレスポンスを送り返すことで、request を処理する。request が正常に処理された場合はtrue を返す。このメソッドがfalse を返す場合、その後にmissingHandler() が呼び出される。

この関数は、true を返す前にresponder から移動しなければならない。

bool QAbstractHttpServer::hasPendingWebSocketConnections() const

サーバーに保留中の WebSocket 接続がある場合はtrue を返し、ない場合はfalse を返す。

newWebSocketConnection()、nextPendingWebSocketConnection()、addWebSocketUpgradeVerifier()も参照のこと

[since 6.8] QHttp2Configuration QAbstractHttpServer::http2Configuration() const

サーバの HTTP/2 設定パラメータを返します。

この関数は Qt 6.8 で導入されました。

setHttp2Configuration()も参照して ください。

QList<QLocalServer *> QAbstractHttpServer::localServers() const

この HTTP サーバのローカルサーバを返します。

serverPorts() も参照して ください。

[pure virtual protected] void QAbstractHttpServer::missingHandler(const QHttpServerRequest &request, QHttpServerResponder &responder)

handleRequest() で処理されなかったrequest を処理するために、この関数をオーバーライドします。この関数は、handleRequest() がfalse を返すか、WebSocket のアップグレードが試みられ、newWebSocketConnection() への接続がないか、一致する WebSocket 検証者が存在しない場合に呼び出される。request およびresponder パラメータは、handleRequest() が呼び出されたときと同じである。

handleRequest() およびaddWebSocketUpgradeVerifier()も参照

[signal] void QAbstractHttpServer::newWebSocketConnection()

このシグナルは、新しい WebSocket 接続が利用可能になるたびに発行される。

hasPendingWebSocketConnections()、nextPendingWebSocketConnection()、addWebSocketUpgradeVerifier() も参照

std::unique_ptr<QWebSocket> QAbstractHttpServer::nextPendingWebSocketConnection()

次の保留中の接続を、接続済みのQWebSocket オブジェクトとして返します。保留中の接続がないときにこの関数を呼び出すと、nullptr が返されます。

注意: 返されたQWebSocket オブジェクトは、別のスレッドから使用することはできません。

newWebSocketConnection()、hasPendingWebSocketConnections()、addWebSocketUpgradeVerifier()も参照

QList<quint16> QAbstractHttpServer::serverPorts() const

QAbstractHttpServer のインスタンスがリッスンしているポートのリストを返す。

この関数はQObject::children と同じ保証を持ち、追加された最新のサーバがベクタの最後のエントリとなる。

servers()も参照

QList<QTcpServer *> QAbstractHttpServer::servers() const

この HTTP サーバの TCP サーバを返します。

serverPorts()も参照

[since 6.8] void QAbstractHttpServer::setHttp2Configuration(const QHttp2Configuration &configuration)

サーバの HTTP/2 設定パラメータを設定します。

次の HTTP/2 接続は、与えられたconfiguration を使用します。

この関数は Qt 6.8 で導入されました。

http2Configuration()も参照して ください。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。