Qt HTTP Server
Qt HTTP Server permite integrar la funcionalidad del servidor HTTP en una aplicación. Los casos de uso comunes son la exposición de la funcionalidad de la aplicación a través de APIs REST, o hacer que los dispositivos en un entorno de confianza se puedan configurar también a través de HTTP. Las limitaciones se describen en Limitaciones y seguridad.
Visión general
Qt HTTP Server proporciona bloques de construcción para incrustar un servidor HTTP ligero basado en RFC 2616 y RFC 9113 en una aplicación. Hay clases para los mensajes enviados y recibidos, y para las distintas partes de un servidor HTTP.
La clase QHttpServer tiene una función route() para enlazar llamadas a diferentes URLs entrantes. Estas llamadas pueden tomar como argumentos una colección extensible de diferentes tipos copiables que son analizados desde la URL. Los tipos soportados son la mayoría de los tipos numéricos, QString, QByteArray, y QUrl. Opcionalmente, las llamadas también pueden tomar como argumentos los objetos QHttpServerRequest y QHttpServerResponder. La clase QHttpServerRequest contiene toda la información de una petición entrante, y es necesaria para obtener body() de una petición POST HTTP. Las callables devuelven un objeto QHttpServerResponse o responden utilizando el argumento QHttpServerResponder. La clase QHttpServerResponse contiene una respuesta completa y tiene numerosos constructores para diferentes tipos, mientras que QHttpServerResponder tiene varios métodos para escribir de vuelta al cliente.
La clase QHttpServer también tiene una función addAfterRequestHandler() para procesar un QHttpServerResponse adicional, y una función setMissingHandler() para anular el comportamiento por defecto de devolver 404 Not Found cuando no hay rutas coincidentes. De la clase QAbstractHttpServer hereda una función bind() para enlazarse a un QTcpServer, QSslServer, o QLocalServer a la escucha.
También se puede crear un servidor HTTP subclasificando la clase QAbstractHttpServer y sobreescribiendo las funciones handleRequest() y missingHandler().
El registro en tiempo de ejecución puede configurarse como se describe aquí.
Limitaciones y seguridad
Qt HTTP Server no tiene muchas de las características y optimizaciones más avanzadas que tienen los servidores HTTP de propósito general. Tampoco ha visto el mismo escrutinio con respecto a varios vectores de ataque a través de la red. Utilice Qt HTTP Server, por lo tanto, sólo para conexiones locales o en una red de confianza, y no exponga los puertos a Internet.
Sin embargo, puedes añadir soporte HTTPS como medida básica de seguridad. Si Qt está compilado con soporte para TLS, puedes enlazar el servidor HTTP a un objeto QSslServer, proporcionando manejo de Seguridad de Capa de Transporte.
La función QSslSocket::SupportedFeature::ServerSideAlpn del backend TLS activo es necesaria para el soporte de HTTP/2. Para comprobar si un backend lo soporta, utilice QSslSocket::isFeatureSupported.
Uso del módulo
El uso de un módulo Qt requiere la vinculación con la biblioteca del módulo, ya sea directamente o a través de otras dependencias. Varias herramientas de compilación tienen soporte dedicado para esto, incluyendo CMake y qmake.
Compilación con CMake
Utilice el comando find_package() para localizar los componentes del módulo necesarios en el paquete Qt6:
find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
Véase también la descripción general de la compilación con CMake.
Construcción con qmake
Para configurar el módulo para su compilación con qmake, añada el módulo como valor de la variable QT en el archivo .pro del proyecto:
QT += httpserver
Licencias
Qt HTTP Server está disponible bajo licencias comerciales de The Qt Company. Además, está disponible bajo la Licencia Pública General GNU, versión 3. Ver Licencias Qt para más detalles.
Referencia
Ejemplos
El módulo proporciona los siguientes Ejemplos como guía para el uso de la 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.