QHttpServerRouter Class
Bietet Funktionen zum Verknüpfen eines Pfads mit einem „ ViewHandler “. Mehr...
| Header: | #include <QHttpServerRouter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer) |
| qmake: | QT += httpserver |
| Seit: | Qt 6.4 |
Öffentliche Funktionen
| 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) |
Ausführliche Beschreibung
QHttpServerRouter ist ein regelbasiertes System zur Weiterleitung von HTTP-Anfragen an die entsprechenden Handler. Sie können „ QHttpServerRouterRule “-Instanzen hinzufügen, die einen Anforderungspfad und den dazugehörigen Handler definieren.
Variable Teile in der Route können mit Platzhaltern ("<arg>") im Anforderungspfad angegeben werden, am Ende ist dies jedoch nicht erforderlich. Der Handler erhält die übereinstimmenden Werte als QRegularExpressionMatch. Die Argumente können jeden Typ haben, für den ein converter verfügbar ist. Die Erstellung des Handlers lässt sich mit QHttpServerRouterRule::bindCaptured() vereinfachen.
Hinweis: Eine `QHttpServerRouter`-Instanz darf durch ihre Regeln nicht verändert werden.
Hinweis: Dies ist eine Low-Level-Routing-API für einen HTTP-Server.
Minimalbeispiel:
auto pageView = [] (const quint64 page) {
qDebug() << "page" << page;
};
using ViewHandler = decltype(pageView);
QHttpServerRouter router;
// Callback „pageView“ für die Anfrage „/page/<number>“ registrieren
// zum Beispiel: „/page/10“, „/page/15“
router.addRule<ViewHandler>(
new QHttpServerRouterRule("/page/", [=] (QRegularExpressionMatch&match,
const QHttpServerRequest&,
QHttpServerResponder&&) {
auto boundView = QHttpServerRouterRule::bindCaptured(pageView, match);
// Ruft pageView auf
boundView();
}));Dokumentation zur Mitgliedsfunktion
QHttpServerRouter::QHttpServerRouter(QAbstractHttpServer *server)
Erstellt ein QHttpServerRouter-Objekt mit Standardkonvertern.
Siehe auch „ converters “.
[noexcept] QHttpServerRouter::~QHttpServerRouter()
Löscht ein ` QHttpServerRouter`.
template <typename Type> bool QHttpServerRouter::addConverter(QAnyStringView regexp)
Fügt einen neuen Konverter für den Typ „Type“ hinzu, der mit „ regexp “ geparst werden kann, und gibt bei Erfolg „ true “ zurück, andernfalls „ false “. Bei Erfolg kann der registrierte Typ als Argument in Handlern für „ QHttpServerRouterRule “ verwendet werden. Der reguläre Ausdruck wird zum Parsen des Pfadmusters der Regel verwendet.
Falls bereits ein Konverter vom Typ `Type` vorhanden ist, wird dessen regulärer Ausdruck durch ` regexp` ersetzt.
Benutzerdefinierte Konverter können die verfügbaren Typkonvertierungen über das „ QMetaType “-System erweitern.
Definieren Sie eine Klasse mit einem „ QString “-Konstruktor:
struct CustomArg {
int data = 10;
CustomArg() {} ;
CustomArg(const QString &urlArg) : data(urlArg.toInt()) {}
};Um einen benutzerdefinierten Typ mit dem „ HTTP server “ zu verwenden, registrieren Sie ihn mithilfe dieser Funktion und definieren Sie einen „ route “-Handler unter Verwendung des neuen Typs:
server.router()->addConverter<CustomArg>(u"[+-]?\\d+");
server.route("/customTest/<arg>", [] (const CustomArg custom) { return QString::number(custom.data); });Siehe auch „ converters “ und „ clearConverters “.
void QHttpServerRouter::addConverter(QMetaType metaType, QAnyStringView regexp)
Fügt einen neuen Konverter für metaType hinzu, der mit regexp geparst werden kann. Ein Konverter für metaType ermöglicht die Verwendung dieses Typs in einem Pfadmuster eines QHttpServerRouterRule. Der reguläre Ausdruck wird verwendet, um Parameter vom Typ metaType aus dem Pfadmuster zu parsen.
Falls bereits ein Konverter vom Typ metaType vorhanden ist, wird dessen regulärer Ausdruck durch regexp ersetzt.
Siehe auch „ converters “ und „ clearConverters “.
template <typename ViewHandler, typename ViewTraits = QHttpServerRouterViewTraits<ViewHandler>> QHttpServerRouterRule *QHttpServerRouter::addRule(std::unique_ptr<QHttpServerRouterRule> rule)
Fügt dem Router eine neue „ rule “ hinzu.
Gibt bei Erfolg einen Zeiger auf die neue Regel zurück; andernfalls wird ` nullptr` zurückgegeben.
Innerhalb von `addRule` ermitteln wir die `ViewHandler`-Argumente und generieren eine Liste ihrer ` QMetaType::Type `-IDs. Anschließend analysieren wir den Pfad und ersetzen jedes ` "<arg>" ` durch einen regulären Ausdruck für den entsprechenden Typ aus der Liste.
Der übergebene ` rule ` darf die ` QHttpServerRouter `-Instanz nicht verändern.
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()
Entfernt alle Konverter.
Hinweis: clearConverters () richtet keine Standardkonverter ein.
Siehe auch converters und addConverter.
QHash<QMetaType, QString> QHttpServerRouter::converters() &&
const QHash<QMetaType, QString> &QHttpServerRouter::converters() const &
Gibt ein Map mit Konvertertypen und regulären Ausdrücken zurück, die bei diesem „ QHttpServerRouter “ registriert sind. Dies sind die Typen, die in Pfadmustern von „ QHttpServerRouterRules “ verwendet werden können.
Die folgenden Konverter sind standardmäßig verfügbar:
| Konstante | Beschreibung |
|---|---|
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 | Ein leerer Konverter. |
Siehe auch addConverter und clearConverters.
bool QHttpServerRouter::handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder) const
Behandelt jede neue „ request “ für den HTTP-Server mithilfe von „ responder “.
Durchläuft die Liste der Regeln, um die erste passende Regel zu finden, führt diese Regel aus und gibt „ true “ zurück. Gibt „ false “ zurück, wenn keine Regel mit der Anfrage übereinstimmt.
void QHttpServerRouter::removeConverter(QMetaType metaType)
Entfernt den Konverter für den Typ „ metaType “.
Siehe auch „ 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.