Qt HTTP Server
Qt HTTP Server では、アプリケーションにHTTPサーバー機能を組み込むことをサポートしています。主なユースケースは、REST APIを通じてアプリケーションの機能を公開すること、あるいは信頼できる環境内のデバイスをHTTP経由で設定可能にすることです。信頼できる環境とは、Qt HTTP Server がインターネットに直接公開されてはならず、エンドユーザー向けの汎用Webサーバーとしての機能を提供するために使用されてはならないことを意味します。 詳細については、「制限事項とセキュリティ」を参照してください。
概要
Qt HTTP Server は、HTTP/2、HTTP/1.1、およびHTTP/1.0をサポートする軽量なHTTPサーバーをアプリケーションに組み込むための構成要素を提供します。送受信されるメッセージや、HTTPサーバーの各構成要素に対応するクラスが用意されています。
QHttpServer クラスには、呼び出し可能オブジェクトをさまざまな着信URLにバインドするためのroute()関数があります。これらの呼び出し可能オブジェクトは、URLから解析された、コピー可能なさまざまな型のextensible コレクションを引数として受け取ることができます。サポートされている型は、ほとんどの数値型、QString 、QByteArray 、およびQUrl です。オプションで、呼び出し可能オブジェクトはQHttpServerRequest およびQHttpServerResponder オブジェクトを引数として受け取ることもできます。QHttpServerRequest クラスは、受信リクエストのすべての情報を保持しており、POST HTTPリクエストからbody()を取得するために必要です。呼び出し可能オブジェクトは、QHttpServerResponse オブジェクトを返すか、QHttpServerResponder 引数を使用して応答します。QHttpServerResponse クラスは完全なレスポンスを保持しており、さまざまなタイプに対応した多数のコンストラクタを備えている一方、QHttpServerResponder にはクライアントへ書き戻すためのさまざまなメソッドが用意されています。
QHttpServer クラスには、QHttpServerResponse をさらに処理するためのaddAfterRequestHandler()関数や、ルートが一致しない場合に404 Not Found を返すというデフォルトの挙動を上書きするためのsetMissingHandler()関数も備わっています。また、QAbstractHttpServer クラスから、リスニング中のQTcpServer 、QSslServer 、またはQLocalServer にバインドするためのbind()関数を継承しています。
また、QAbstractHttpServer クラスをサブクラス化し、handleRequest()およびmissingHandler()関数をオーバーライドすることで、HTTPサーバーを作成することもできます。
実行時のロギングは、こちらに記載されている手順に従って設定できます。
制限事項とセキュリティ
Qt HTTP Server には、汎用 HTTP サーバーが持つような高度な機能や最適化の多くが備わっていません。また、ネットワーク上のさまざまな攻撃ベクトルについても、汎用 HTTP サーバーほど厳密に検証されていません。したがって、Qt HTTP Server はローカル接続または信頼できるネットワーク内でのみ使用し、ポートをインターネットに公開しないでください。
ただし、基本的なセキュリティ対策として HTTPS サポートを追加することは可能です。Qt が TLS 対応でコンパイルされている場合、HTTP サーバーを `QSslServer ` オブジェクトにバインドすることで、トランスポート層セキュリティ(TLS)の処理を実現できます。
HTTP/2をサポートするには、アクティブなTLSバックエンドのQSslSocket::SupportedFeature::ServerSideAlpn 機能が必要です。バックエンドがこれをサポートしているかどうかを確認するには、QSslSocket::isFeatureSupported を使用してください。
「Qt HTTP Server のセキュリティに関する考慮事項」を参照してください。
モジュールの使用
Qtモジュールを使用するには、直接または他の依存関係を通じて、モジュールライブラリに対してリンクを行う必要があります。CMakeやqmakeなど、いくつかのビルドツールにはこれに対する専用のサポートが用意されています。
CMake を使用したビルド
find_package() コマンドを使用して、Qt6 パッケージ内の必要なモジュールコンポーネントを特定します:
find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)「CMake によるビルド」の概要も参照してください。
qmake を使用したビルド
qmake を使用してモジュールをビルドするように設定するには、プロジェクトの .pro ファイル内で QT 変数の値としてモジュールを追加します:
QT += httpserverライセンス
Qt HTTP Server は、The Qt Company から商用ライセンスで提供されています。また、GNU General Public License バージョン 3 のもとでも利用可能です。詳細については、「Qt ライセンス」を参照してください。
参考
サンプル
このモジュールでは、API の使用ガイドとして以下のサンプルを提供しています。
© 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.