Qt HTTP Server
Qt HTTP Server unterstützt die Integration von HTTP-Serverfunktionen in eine Anwendung. Übliche Anwendungsfälle sind die Offenlegung der Anwendungsfunktionalität über REST-APIs oder die Möglichkeit, Geräte in einer vertrauenswürdigen Umgebung auch über HTTP zu konfigurieren. Die Beschränkungen werden in Beschränkungen und Sicherheit beschrieben.
Überblick
Qt HTTP Server bietet Bausteine für die Einbettung eines leichtgewichtigen HTTP-Servers auf der Grundlage von RFC 2616 und RFC 9113 in eine Anwendung. Es gibt Klassen für die gesendeten und empfangenen Nachrichten und für die verschiedenen Teile eines HTTP-Servers.
Die Klasse QHttpServer verfügt über eine Funktion route(), um Callables an verschiedene eingehende URLs zu binden. Diese Callables können als Argumente eine extensible Sammlung verschiedener kopierbarer Typen annehmen, die aus der URL geparst werden. Zu den unterstützten Typen gehören die meisten numerischen Typen, QString, QByteArray, und QUrl. Optional können die Callables auch QHttpServerRequest und QHttpServerResponder Objekte als Argumente annehmen. Die Klasse QHttpServerRequest enthält alle Informationen über eine eingehende Anfrage und wird benötigt, um die body() aus einer POST-HTTP-Anfrage zu erhalten. Die Callables geben entweder ein QHttpServerResponse Objekt zurück oder antworten mit dem QHttpServerResponder Argument. Die Klasse QHttpServerResponse enthält eine vollständige Antwort und hat zahlreiche Konstruktoren für verschiedene Typen, während die Klasse QHttpServerResponder verschiedene Methoden für die Rückmeldung an den Client hat.
Die Klasse QHttpServer hat auch eine Funktion addAfterRequestHandler(), um eine QHttpServerResponse weiter zu verarbeiten, und eine Funktion setMissingHandler(), um das Standardverhalten der Rückgabe von 404 Not Found
aufzuheben, wenn keine Routen übereinstimmen. Von der Klasse QAbstractHttpServer erbt sie eine bind()-Funktion, um sich an eine hörende QTcpServer, QSslServer oder QLocalServer zu binden.
Ein HTTP-Server kann auch durch Unterklassifizierung der Klasse QAbstractHttpServer und Überschreibung der Funktionen handleRequest() und missingHandler() erstellt werden.
Die Laufzeitprotokollierung kann wie hier beschrieben konfiguriert werden.
Beschränkungen und Sicherheit
Qt HTTP Server verfügt nicht über viele der fortgeschrittenen Funktionen und Optimierungen, die HTTP-Server für allgemeine Zwecke haben. Er wurde auch nicht so genau auf verschiedene Angriffsvektoren über das Netzwerk untersucht. Verwenden Sie Qt HTTP Server daher nur für lokale Verbindungen oder in einem vertrauenswürdigen Netzwerk, und geben Sie die Ports nicht für das Internet frei.
Sie können jedoch HTTPS-Unterstützung als grundlegende Sicherheitsmaßnahme hinzufügen. Wenn Qt mit Unterstützung für TLS kompiliert ist, können Sie den HTTP-Server an ein QSslServer Objekt binden, das die Handhabung von Transport Layer Security ermöglicht.
Die QSslSocket::SupportedFeature::ServerSideAlpn Funktion des aktiven TLS Backends wird für die HTTP/2 Unterstützung benötigt. Um zu überprüfen, ob ein Backend dies unterstützt, verwenden Sie QSslSocket::isFeatureSupported.
Verwendung des Moduls
Die Verwendung eines Qt-Moduls erfordert eine Verknüpfung mit der Modulbibliothek, entweder direkt oder über andere Abhängigkeiten. Mehrere Build-Tools bieten hierfür spezielle Unterstützung, darunter CMake und qmake.
Bauen mit CMake
Verwenden Sie den Befehl find_package()
, um die benötigten Modulkomponenten im Qt6-Paket zu finden:
find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
Siehe auch die Übersicht Bauen mit CMake.
Bauen mit qmake
Um das Modul für die Erstellung mit qmake zu konfigurieren, fügen Sie das Modul als Wert der QT-Variable in der .pro-Datei des Projekts hinzu:
QT += httpserver
Lizenzen
Qt HTTP Server ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus ist es unter der GNU General Public License, Version 3, verfügbar. Siehe Qt Licensing für weitere Details.
Referenz
Beispiele
Das Modul bietet die folgenden Beispiele als Leitfaden für die Verwendung der API.
© 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.