Qt HTTP Server

Qt HTTP Server は、HTTPサーバー機能をアプリケーションに組み込むことをサポートしています。一般的な使用例としては、REST APIを通じてアプリケーションの機能を公開したり、信頼された環境にあるデバイスをHTTP経由でも設定可能にしたりすることです。制限については、「制限とセキュリティ」で説明しています。

概要

Qt HTTP Server は、RFC 2616に基づく軽量HTTPサーバーをアプリケーションに組み込むためのビルディングブロックを提供します。送受信されるメッセージと、HTTPサーバーの様々な部分のためのクラスがあります。

HTTPサーバーは、QAbstractHttpServer クラスをサブクラス化し、handleRequest() 関数をオーバーライドすることで作成できます。QAbstractHttpServer クラスは、既存のQTcpServerQSslServer 、またはQLocalServer にバインドするための関数を提供します。QHttpServerRouter クラスを使用すると、着信 URL に基づく callable へのディスパッチを簡素化できます。

QHttpServer クラスを使用すると、さらに簡略化できます。QHttpServer クラスはQAbstractHttpServer のサブクラスであり、オーバーロードされた route 関数を定義して、さまざまな着信URLに callable をバインドし、addAfterRequestHandler() 関数を定義して、応答をさらに処理する。

ランタイム・ロギングは、ここで説明されているように設定できる。

制限とセキュリティ

Qt HTTP Server は、汎用のHTTPサーバーが持っているような、より高度な機能や最適化の多くは持っていません。また、ネットワークを介した様々な攻撃ベクトルに関しても、同じように精査されていない。したがって、 、ローカル接続または信頼できるネットワーク内でのみ使用し、ポートをインターネットに公開しないでください。Qt HTTP Server

基本的なセキュリティ対策として、HTTPSサポートを追加することはできます。Qt が TLS サポート付きでコンパイルされている場合、QAbstractHttpServer とそのサブクラスをQSslServer オブジェクトにバインドすることで、トランスポート・レイヤー・セキュリティのハンドリングを提供することができます。

モジュールの使用

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.