Qt HTTP サーバ

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 を使用するためのガイドとして、以下のサンプルを提供します。

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