QAbstractHttpServer Class
HTTP サーバを実装するためにサブクラス化する API。詳細...
ヘッダー | #include <QAbstractHttpServer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer) |
qmake: | QT += httpserver |
以来: | Qt 6.4 |
を継承する: | QObject |
継承元: |
パブリック関数
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) |
シグナル
void | newWebSocketConnection() |
保護された関数
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サーバーによって処理され、転送されます。
この関数を呼び出す前に、server でQLocalServer::listen() を呼び出すのはユーザーの責任である。server がリッスンしていない場合、何も起こらず、false
が返されます。
server がnullptrの場合、falseが返される。
成功すると、server がこの HTTP サーバーの親になり、true
が返されます。
QLocalServer およびQLocalServer::listen()も参照 。
bool QAbstractHttpServer::bind(QTcpServer *server)
HTTPサーバーを、送信が行われるTCPserver にバインドする。複数の接続とポート、例えばSSL接続と非暗号化接続を処理するために、異なるTCPserver のインスタンスでこの関数を複数回呼び出すことが可能です。
この関数を呼び出すと、すべての新しい接続がHTTPサーバによって処理され、転送されます。
この関数を呼び出す前に、server でQTcpServer::listen() を呼び出すのはユーザーの責任である。server がリッスンしていない場合、何も起こらずfalse
が返される。
成功すると、server がこのHTTPサーバーの親となり、true
が返される。
HTTP 2を使用するには、QSslConfiguration::setAllowedNextProtocols() を引数{ QSslConfiguration::ALPNProtocolHTTP2 }
で呼び出したQSslServer にバインドする。
QTcpServer 、QTcpServer::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 と同じ保証を持ち、追加された最新のサーバが vector の最後のエントリとなります。
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()も参照してください 。
© 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.