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 :
| Constante | Description |
|---|---|
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 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.