Sur cette page

QHttpServerRouter Class

Fournit des fonctions permettant de lier un chemin à un ViewHandler. Plus....

En-tête : #include <QHttpServerRouter>
CMake : find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
qmake : QT += httpserver
Depuis : Qt 6.4

Fonctions publiques

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)

Description détaillée

QHttpServerRouter est un système basé sur des règles pour acheminer les requêtes HTTP vers les gestionnaires appropriés. Vous pouvez ajouter des instances QHttpServerRouterRule, qui définissent un chemin de requête et son gestionnaire correspondant.

Les parties variables de l'itinéraire peuvent être spécifiées avec des caractères génériques ("<arg>") dans le chemin de la requête, mais cela n'est pas nécessaire à la fin. Le gestionnaire reçoit les valeurs correspondantes sous la forme d'un QRegularExpressionMatch. Les arguments peuvent être de n'importe quel type pour lequel un converter est disponible. La création du gestionnaire peut être simplifiée avec QHttpServerRouterRule::bindCaptured().

Remarque : une instance de QHttpServerRouter ne doit pas être modifiée par ses règles.

Remarque : il s'agit d'une API de routage de bas niveau pour un serveur HTTP.

Exemple minimal :

auto pageView = [](const quint64 page) {    qDebug() << "page" << page;
} ;using ViewHandler = decltype(pageView) ;QHttpServerRouter router ;// enregistrer le callback pageView sur la requête "/page/<number>"// par exemple : "/page/10", "/page/15"router.addRule<ViewHandler>( new QHttpServerRouterRule("/page/", [=] (QRegularExpressionMatch &match, const QHttpServerRequest&,      QHttpServerResponder &&){ auto boundView = QHttpServerRouterRule::bindCaptured(pageView, match) ; // il appelle pageViewboundView() ; }) ;

Documentation des fonctions membres

QHttpServerRouter::QHttpServerRouter(QAbstractHttpServer *server)

Crée un objet QHttpServerRouter avec les convertisseurs par défaut.

Voir aussi converters.

[noexcept] QHttpServerRouter::~QHttpServerRouter()

Détruit un QHttpServerRouter.

template <typename Type> bool QHttpServerRouter::addConverter(QAnyStringView regexp)

Ajoute un nouveau convertisseur pour le type qui peut être analysé avec regexp, et renvoie true si cela a réussi, sinon renvoie false. En cas de succès, le type enregistré peut être utilisé comme argument dans les gestionnaires de QHttpServerRouterRule. L'expression régulière sera utilisée pour analyser le modèle de chemin de la règle.

S'il existe déjà un convertisseur de type Type, l'expression rationnelle de ce convertisseur est remplacée par regexp.

Les convertisseurs personnalisés peuvent étendre les conversions de type disponibles via le système QMetaType.

Définissez une classe avec un constructeur QString:

struct CustomArg {
    int data = 10;

    CustomArg() {} ;
    CustomArg(const QString &urlArg) : data(urlArg.toInt()) {}
};

Pour utiliser un type personnalisé avec HTTP server, enregistrez-le à l'aide de cette fonction et définissez un gestionnaire route utilisant le nouveau type :

server.router()->addConverter<CustomArg>(u"[+-]?\\d+");
server.route("/customTest/<arg>", [] (const CustomArg custom) { return QString::number(custom.data); });

Voir également converters et clearConverters.

void QHttpServerRouter::addConverter(QMetaType metaType, QAnyStringView regexp)

Ajoute un nouveau convertisseur pour metaType qui peut être analysé avec regexp. Le fait d'avoir un convertisseur pour metaType permet d'utiliser ce type dans un motif de chemin d'accès de QHttpServerRouterRule. L'expression régulière est utilisée pour analyser les paramètres de type metaType à partir du motif de chemin d'accès.

S'il existe déjà un convertisseur de type metaType, l'expression rationnelle de ce convertisseur est remplacée par regexp.

Voir également converters et clearConverters.

template <typename ViewHandler, typename ViewTraits = QHttpServerRouterViewTraits<ViewHandler>> QHttpServerRouterRule *QHttpServerRouter::addRule(std::unique_ptr<QHttpServerRouterRule> rule)

Ajoute une nouvelle rule au routeur.

Renvoie un pointeur sur la nouvelle règle en cas de succès, sinon il renvoie nullptr.

Dans addRule, nous déterminons les arguments ViewHandler et générons une liste de leurs identifiants QMetaType::Type. Ensuite, nous analysons le chemin et remplaçons chaque "<arg>" par une expression rationnelle correspondant à son type dans la liste.

L'adresse rule fournie ne doit pas modifier l'instance 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()

Supprime tous les convertisseurs.

Remarque : clearConverters() ne configure pas les convertisseurs par défaut.

Voir aussi converters et addConverter.

const QHash<QMetaType, QString> &QHttpServerRouter::converters() const &

QHash<QMetaType, QString> QHttpServerRouter::converters() &&

Renvoie une carte des types de convertisseurs et des expressions régulières enregistrés sur ce site QHttpServerRouter. Il s'agit des types qui peuvent être utilisés dans les motifs de chemin d'accès de QHttpServerRouterRules.

Les convertisseurs suivants sont disponibles par défaut :

ConstanteDescription
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::VoidUn convertisseur vide.

Voir également addConverter et clearConverters.

bool QHttpServerRouter::handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder) const

Traite chaque nouvelle adresse request pour le serveur HTTP en utilisant responder.

Interroge la liste des règles pour trouver la première qui correspond, puis exécute cette règle et renvoie true. Renvoie false si aucune règle ne correspond à la demande.

void QHttpServerRouter::removeConverter(QMetaType metaType)

Supprime le convertisseur pour le type metaType.

Voir aussi 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.