Qt HTTP Server
Qt HTTP Server は、HTTPサーバー機能をアプリケーションに組み込むことをサポートしています。一般的な使用例としては、REST APIを通じてアプリケーションの機能を公開したり、信頼された環境にあるデバイスをHTTP経由でも設定可能にしたりすることです。制限事項については、「制限事項とセキュリティ」で説明しています。
概要
Qt HTTP Server RFC2616と RFC9113に基づく軽量HTTPサーバーをアプリケーションに組み込むためのビルディングブロックを提供します。送受信されるメッセージと、HTTPサーバーのさまざまな部分のためのクラスがあります。
QHttpServer クラスは、route() 関数を持ち、さまざまな着信URLに callable をバインドします。これらのcallablesは、URLから解析されるさまざまなコピー可能な型のコレクションextensible を引数として取ることができる。対応する型は、ほとんどの数値型、QString 、QByteArray 、およびQUrl である。オプションで、callablesはQHttpServerRequest およびQHttpServerResponder オブジェクトを引数として取ることもできる。QHttpServerRequest クラスは、受信リクエストのすべての情報を含んでおり、POST HTTP リクエストからbody() を取得するために必要である。callables はQHttpServerResponse オブジェクトを返すか、QHttpServerResponder 引数を使用して応答します。QHttpServerResponse クラスには完全なレスポンスが含まれ、さまざまなタイプに対応する多数のコンストラクタがあり、QHttpServerResponder にはクライアントに書き戻すためのさまざまなメソッドがあります。
QHttpServer クラスは、さらにQHttpServerResponse を処理するaddAfterRequestHandler() 関数と、ルートがマッチしない場合に404 Not Found
を返すデフォルトの動作をオーバーライドするsetMissingHandler() 関数も持っています。QAbstractHttpServer クラスからは、リッスン中のQTcpServer 、QSslServer 、QLocalServer にバインドするためのbind() 関数を継承しています。
また、QAbstractHttpServer クラスをサブクラス化し、handleRequest() およびmissingHandler() 関数をオーバーライドすることでも、HTTP サーバーを作成できます。
ランタイム・ロギングは、ここで説明するように設定できます。
制限とセキュリティ
Qt HTTP Server は、汎用の HTTP サーバーが持っているような、より高度な機能や最適化の多くは持っていません。また、ネットワークを介した様々な攻撃ベクトルに関しても、同じように精査されていません。したがって、 、ローカル接続または信頼できるネットワーク内でのみ使用し、ポートをインターネットに公開しないでください。Qt HTTP Server
基本的なセキュリティ対策として、HTTPSサポートを追加することはできます。Qt が TLS サポート付きでコンパイルされている場合、HTTP サーバをQSslServer オブジェクトにバインドすることで、トランスポート・レイヤー・セキュリティのハンドリングを提供することができます。
アクティブな TLS バックエンドからのQSslSocket::SupportedFeature::ServerSideAlpn 機能は、HTTP/2 サポートに必要です。バックエンドがこれをサポートしているかどうかを確認するには、QSslSocket::isFeatureSupported を使ってください。
モジュールの使用
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, version 3でも利用可能です。詳細はQt Licensingを参照してください。
リファレンス
サンプル
このモジュールは、APIを使用するためのガイドとして、以下のExamplesを提供しています。
© 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.