Sur cette page

QHttpServerRouter Class

Fournit des fonctions permettant d'associer un chemin d'accès à une ViewHandler. En savoir 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 permettant d'acheminer les requêtes HTTP vers les gestionnaires appropriés. Vous pouvez ajouter des instances d'QHttpServerRouterRule, qui définissent un chemin de requête et le gestionnaire correspondant.

Les parties variables de la route peuvent être spécifiées à l'aide de placeholders ("<arg>") dans le chemin de requête, mais cela n'est pas nécessaire à la fin. Le gestionnaire reçoit les valeurs correspondantes sous la forme d'un objet QRegularExpressionMatch. Les arguments peuvent être de n'importe quel type pour lequel une méthode converter est disponible. La création du gestionnaire peut être simplifiée à l'aide de 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;

// enregistrement de la fonction de rappel pageView pour les requêtes « /page/<numéro> »
// par exemple : « /page/10 », « /page/15 »
router.addRule<ViewHandler>(
    new QHttpServerRouterRule("/page/", [=] (QRegularExpressionMatch&match,
                                             const QHttpServerRequest&,
                                             QHttpServerResponder&&) {
    auto boundView = QHttpServerRouterRule::bindCaptured(pageView, match);

    // cela appelle pageView
    boundView();
}));

Documentation des fonctions membres

QHttpServerRouter::QHttpServerRouter(QAbstractHttpServer *server)

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

Voir également converters.

[noexcept] QHttpServerRouter::~QHttpServerRouter()

Supprime un objet de type « QHttpServerRouter ».

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

Ajoute un nouveau convertisseur pour le type « Type » pouvant être analysé à l'aide de ` regexp`, et renvoie ` true ` en cas de succès, sinon ` 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 régulière de ce convertisseur est remplacée par regexp.

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

Définissez une classe dotée d’un constructeur « QString » :

struct CustomArg {
    int data = 10;

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

Pour utiliser un type personnalisé avec le système « 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 pouvant être analysé à l'aide de regexp. La présence d'un convertisseur pour metaType permet d'utiliser ce type dans un modèle de chemin d'accès de QHttpServerRouterRule. L'expression régulière sert à analyser les paramètres de type metaType à partir du modèle de chemin d'accès.

S'il existe déjà un convertisseur de type metaType, l'expression régulière 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 règle « rule » au routeur.

Renvoie un pointeur vers la nouvelle règle en cas de succès ; sinon, renvoie ` nullptr`.

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

L’ 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 : la méthode clearConverters () ne configure pas de convertisseurs par défaut.

Voir également converters et addConverter.

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

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

Renvoie une carte contenant les types de convertisseurs et les expressions régulières enregistrés auprès de ce service QHttpServerRouter. Il s'agit des types pouvant être utilisés dans les modèles 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

Gère chaque nouvelle requête request pour le serveur HTTP à l'aide de responder.

Parcourt la liste des règles pour trouver la première qui correspond, puis exécute cette règle et renvoie l'true. Renvoie l'false si aucune règle ne correspond à la requête.

void QHttpServerRouter::removeConverter(QMetaType metaType)

Supprime le convertisseur pour le type metaType.

Voir également 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.