QHttpServerRouter Class

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 로 대체됩니다.

사용자 정의 변환기는 QMetaType 시스템을 통해 사용 가능한 유형 변환을 확장할 수 있습니다.

QString 생성자를 사용하여 클래스를 정의합니다:

struct CustomArg {
    int data = 10;

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

HTTP server 에서 사용자 정의 유형을 사용하려면 이 함수를 사용하여 등록하고 새 유형을 사용하여 route 핸들러를 정의하세요:

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

convertersclearConverters참조하세요 .

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 아이디 목록을 생성합니다. 그런 다음 경로를 구문 분석하고 각 <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.