QHttpServerRouter Class
Proporciona funciones para vincular una ruta a ViewHandler. Más...
| Cabecera: | #include <QHttpServerRouter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS HttpServer)target_link_libraries(mytarget PRIVATE Qt6::HttpServer) |
| qmake: | QT += httpserver |
| Desde: | Qt 6.4 |
Funciones Públicas
| QHttpServerRouter(QAbstractHttpServer *server) | |
| ~QHttpServerRouter() | |
| bool | addConverter(QAnyStringView regexp) |
| void | addConverter(QMetaType metaType, QAnyStringView regexp) |
| QHttpServerRouterRule * | addRule(std::unique_ptr<QHttpServerRouterRule> rule) |
| void | clearConverters() |
| QHash<QMetaType, QString> | converters() && |
| const QHash<QMetaType, QString> & | converters() const & |
| bool | handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder) const |
| void | removeConverter(QMetaType metaType) |
Descripción detallada
QHttpServerRouter es un sistema basado en reglas para enrutar peticiones HTTP a sus manejadores apropiados. Puede añadir instancias de QHttpServerRouterRule, que definen una ruta de solicitud y su manejador correspondiente.
Las partes variables de la ruta se pueden especificar con marcadores de posición ("<arg>") en la ruta de petición, pero no es necesario al final. El gestor recibe los valores coincidentes como QRegularExpressionMatch. Los argumentos pueden ser de cualquier tipo para el que exista un converter. La creación del manejador puede simplificarse con QHttpServerRouterRule::bindCaptured().
Nota: Una instancia de QHttpServerRouter no debe ser modificada por sus reglas.
Nota: Esta es una API de enrutamiento de bajo nivel para un servidor HTTP.
Ejemplo mínimo:
auto pageView = [](const quint64 page) { qDebug() << "page" << page; };using ViewHandler = decltype(pageView);QHttpServerRouter router;// registrar callback pageView en petición "/page/<número>"// por ejemplo: "/page/10", "/page/15"router.addRule<ViewHandler>( new QHttpServerRouterRule("/page/", [=] (QRegularExpressionMatch &match, const QHttpServerRequest&, QHttpServerResponder &&){ auto boundView = QHttpServerRouterRule::bindCaptured(pageView, match); // llama a pageViewboundView(); }));
Documentación de funciones miembro
QHttpServerRouter::QHttpServerRouter(QAbstractHttpServer *server)
Crea un objeto QHttpServerRouter con los conversores por defecto.
Véase también converters.
[noexcept] QHttpServerRouter::~QHttpServerRouter()
Destruye un QHttpServerRouter.
template <typename Type> bool QHttpServerRouter::addConverter(QAnyStringView regexp)
Añade un nuevo convertidor para Type que puede ser analizado con regexp, y devuelve true si se ha realizado con éxito, en caso contrario devuelve false. Si tiene éxito, el tipo registrado puede utilizarse como argumento en los manejadores para QHttpServerRouterRule. La expresión regular se utilizará para analizar el patrón de ruta de la regla.
Si ya existe un convertidor de tipo Type, la expresión regular de ese convertidor se sustituye por regexp.
Los conversores personalizados pueden ampliar las conversiones de tipo disponibles a través del sistema QMetaType.
Defina una clase con un constructor QString:
struct CustomArg { int data = 10; CustomArg() {} ; CustomArg(const QString &urlArg) : data(urlArg.toInt()) {} };
Para utilizar un tipo personalizado con el HTTP server, regístrelo utilizando esta función y defina un manejador route utilizando el nuevo tipo:
server.router()->addConverter<CustomArg>(u"[+-]?\\d+"); server.route("/customTest/<arg>", [] (const CustomArg custom) { return QString::number(custom.data); });
Véase también converters y clearConverters.
void QHttpServerRouter::addConverter(QMetaType metaType, QAnyStringView regexp)
Añade un nuevo convertidor para metaType que puede analizarse con regexp. Tener un convertidor para metaType permite utilizar este tipo en un patrón de ruta de QHttpServerRouterRule. La expresión regular se utiliza para analizar parámetros de tipo metaType a partir del patrón de ruta.
Si ya existe un convertidor de tipo metaType, la expresión regular de ese convertidor se sustituye por regexp.
Véase también converters y clearConverters.
template <typename ViewHandler, typename ViewTraits = QHttpServerRouterViewTraits<ViewHandler>> QHttpServerRouterRule *QHttpServerRouter::addRule(std::unique_ptr<QHttpServerRouterRule> rule)
Añade una nueva rule al enrutador.
Devuelve un puntero a la nueva regla si tiene éxito; en caso contrario devuelve nullptr.
Dentro de addRule, determinamos los argumentos ViewHandler y generamos una lista de sus ids QMetaType::Type. A continuación, analizamos la ruta y sustituimos cada "<arg>" por una regexp para su tipo de la lista.
El rule proporcionado no debe modificar la instancia QHttpServerRouter.
QHttpServerRouter router; using ViewHandler = decltype([] (const QString &page, const quint32 num) { }); auto rule = std::make_unique<QHttpServerRouterRule>( "/<arg>/<arg>/log", [] (QRegularExpressionMatch &match, const QHttpServerRequest &request, QHttpServerResponder &&responder) { }); router.addRule<ViewHandler>(std::move(rule));
void QHttpServerRouter::clearConverters()
Elimina todos los convertidores.
Nota: clearConverters() no establece convertidores por defecto.
Véase también converters y addConverter.
const QHash<QMetaType, QString> &QHttpServerRouter::converters() const &
QHash<QMetaType, QString> QHttpServerRouter::converters() &&
Devuelve un mapa de tipos de convertidores y expresiones regulares que están registrados en este QHttpServerRouter. Estos son los tipos que se pueden utilizar en los patrones de ruta de QHttpServerRouterRules.
Los siguientes convertidores están disponibles por defecto:
| Constante | Descripción |
|---|---|
QMetaType::Int | |
QMetaType::Long | |
QMetaType::LongLong | |
QMetaType::Short | |
QMetaType::UInt | |
QMetaType::ULong | |
QMetaType::ULongLong | |
QMetaType::UShort | |
QMetaType::Double | |
QMetaType::Float | |
QMetaType::QString | |
QMetaType::QByteArray | |
QMetaType::QUrl | |
QMetaType::Void | Un convertidor vacío. |
Véase también addConverter y clearConverters.
bool QHttpServerRouter::handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder) const
Maneja cada nuevo request para el servidor HTTP usando responder.
Recorre la lista de reglas hasta encontrar la primera que coincida y la ejecuta, devolviendo true. Devuelve false si ninguna regla coincide con la petición.
void QHttpServerRouter::removeConverter(QMetaType metaType)
Elimina el convertidor para el tipo metaType.
Véase también addConverter.
© 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.