QHttpServerRouter Class

URL을 ViewHandler...에 바인딩하는 기능을 제공합니다... .

헤더: #include <QHttpServerRouter>
CMake: find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
qmake: QT += httpserver
이후: Qt 6.4

공용 함수

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)

상세 설명

QHttpServerRouter는 규칙 기반 시스템으로 각 핸들러에 http 요청을 배포하는 클래스입니다.

요청 경로와 각 핸들러를 나타내는 QHttpServerRouterRules 를 새로 등록할 수 있습니다. 경로의 변수 부분은 요청 경로에 플레이스홀더로 지정할 수 있습니다. 핸들러는 플레이스홀더 값을 QRegularExpressionMatch 로 가져옵니다. 인수는 converter 을 사용할 수 있는 모든 유형이 될 수 있습니다. 핸들러 생성은 QHttpServerRouterRule::bindCaptured 으로 간소화할 수 있습니다. QHttpServerRouter 인스턴스는 해당 규칙에 의해 수정되지 않아야 합니다.

참고: 이것은 HTTP 서버를 위한 저수준 라우팅 API입니다.

최소한의 예입니다:

auto pageView = [](const quint64 페이지) {    qDebug() << "page" << page;
};using ViewHandler = decltype(pageView);QHttpServerRouter 라우터;// 요청 시 콜백 페이지뷰 등록 "/page/<번호>"// 예시: "/page/10", "/page/15"router.addRule<ViewHandler>( new QHttpServerRouterRule("/page/", [=] (QRegularExpressionMatch &match, const QHttpServerRequest&,      QHttpServerResponder &&){ auto boundView = QHttpServerRouterRule::bindCaptured(pageView, match); // it calls pageViewboundView(); }));

멤버 함수 문서

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

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

QHttpServerRouter 에 등록된 변환기 유형 및 정규식 맵을 반환합니다. 다음은 QHttpServerRouterRules 의 경로 패턴에서 사용할 수 있는 유형입니다.

기본적으로 다음 변환기를 사용할 수 있습니다:

Constant설명
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빈 변환기입니다.

addConverterclearConverters참조하세요 .

QHttpServerRouter::QHttpServerRouter(QAbstractHttpServer *server)

기본 변환기를 사용하여 QHttpServerRouter 객체를 생성합니다.

converters도 참조하세요 .

[noexcept] QHttpServerRouter::~QHttpServerRouter()

QHttpServerRouter 을 파괴합니다.

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

regexp 로 구문 분석할 수 있는 Type에 대한 새 변환기를 추가하고, 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다. 성공하면 등록된 타입을 QHttpServerRouterRule 에 대한 핸들러의 인수로 사용할 수 있습니다. 정규식은 규칙의 경로 패턴을 구문 분석하는 데 사용됩니다.

Type 유형의 변환기가 이미 있는 경우 해당 변환기의 정규식은 regexp 로 대체됩니다.

최소한의 예입니다:

구조체 CustomArg { int data = 10; CustomArg() {} ; CustomArg(const QString &urlArg) : data(urlArg.toInt()) {} }; Q_DECLARE_METATYPE(CustomArg);QHttpServerRouter router; router.addConverter<CustomArg>(u"[+-]?\\d+"));auto pageView = [](const CustomArg &customArg) {    qDebug("data: %d", customArg.data);
};using ViewHandler = decltype(pageView);auto rule = std::make_unique<QHttpServerRouterRule>( "/<arg>/log", [&router, &pageView] (QRegularExpressionMatch &match, const QHttpServerRequest&request,             QHttpServerResponder&&responder) { // match의 캡처된 문자열과 quint32로 viewHandler를 바인딩하고 호출합니다:    QHttpServerRouterRule::bindCaptured(pageView, match)(); }); router.addRule<ViewHandler>(std::move(rule));

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

regexp 으로 구문 분석할 수 있는 metaType 에 대한 새 변환기를 추가합니다. metaType 에 대한 변환기가 있으면 QHttpServerRouterRule 의 경로 패턴에서 이 유형을 사용할 수 있습니다. 이 정규식은 경로 패턴에서 metaType 유형의 매개 변수를 구문 분석하는 데 사용됩니다.

metaType 유형의 변환기가 이미 있는 경우 해당 변환기의 정규식은 regexp 으로 대체됩니다.

convertersclearConverters도 참조하세요 .

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

라우터에 새 rule 을 추가합니다.

성공하면 새 규칙에 대한 포인터를 반환하고, 그렇지 않으면 nullptr 을 반환합니다.

addRule 내부에서 ViewHandler 인수를 결정하고 QMetaType::Type 아이디 목록을 생성합니다. 그런 다음 URL을 구문 분석하고 각 <arg> 을 목록에서 해당 유형에 대한 정규식으로 바꿉니다. ruleQHttpServerRouter 인스턴스를 수정해서는 안 됩니다.

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()

모든 변환기를 제거합니다.

참고: clearConverters()는 기본 변환기를 설정하지 않습니다.

convertersaddConverter참조하세요 .

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

responder 을 사용하여 HTTP 서버에 대한 각각의 새로운 request 을 처리합니다.

규칙 목록을 반복하여 일치하는 첫 번째 규칙을 찾은 다음 이 규칙을 실행하여 true 을 반환합니다. 요청과 일치하는 규칙이 없으면 false 을 반환합니다.

void QHttpServerRouter::removeConverter(QMetaType metaType)

metaType 유형에 대한 변환기를 제거합니다.

addConverter도 참조하세요 .

© 2025 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.