이 페이지에서

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 요청을 적절한 핸들러로 라우팅하기 위한 규칙 기반 시스템입니다. 요청 경로와 해당 핸들러를 정의하는 ` QHttpServerRouterRule ` 인스턴스를 추가할 수 있습니다.

경로의 가변 부분은 요청 경로에 자리 표시자("<arg>")를 사용하여 지정할 수 있지만, 경로 끝부분에는 필요하지 않습니다. 핸들러는 일치하는 값을 QRegularExpressionMatch 형태로 수신합니다. 인수는 converter 가 지원되는 모든 유형일 수 있습니다. QHttpServerRouterRule::bindCaptured()을 사용하면 핸들러 생성을 간소화할 수 있습니다.

참고: QHttpServerRouter인스턴스는 해당 규칙에 의해 수정되어서는 안 됩니다.

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

최소 예제:

auto pageView = [] (const quint64 page) {
    qDebug() << "page" << page;
};
using ViewHandler = decltype(pageView);

QHttpServerRouter router;

// "/page/<number>" 요청에 대해 pageView 콜백 등록
// 예: "/page/10", "/page/15"
router.addRule<ViewHandler>(
    new QHttpServerRouterRule("/page/", [=] (QRegularExpressionMatch&match,
                                             const QHttpServerRequest&,
                                             QHttpServerResponder&&) {
    auto boundView = QHttpServerRouterRule::bindCaptured(pageView, match);

    // pageView를 호출합니다
    boundView();
}));

멤버 함수 문서

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); });

converters 및 clearConverters항목도 참조하십시오 .

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

regexp 로 파싱할 수 있는 metaType 용 새로운 변환기를 추가합니다. metaType 용 변환기가 있으면 QHttpServerRouterRule 의 경로 패턴에서 이 유형을 사용할 수 있습니다. 이 정규 표현식은 경로 패턴에서 metaType 유형의 매개변수를 파싱하는 데 사용됩니다.

metaType 유형의 변환기가 이미 존재하는 경우, 해당 변환기의 정규 표현식은 regexp 로 대체됩니다.

converters 및 clearConverters도 참조하십시오 .

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

라우터에 새로운 rule 를 추가합니다.

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

addRule 내부에서는 ViewHandler 인수를 확인하고 해당 QMetaType::Type ID 목록을 생성합니다. 그런 다음 경로를 파싱하여 각 "<arg>" 을 목록에 있는 해당 유형에 대한 정규 표현식으로 대체합니다.

제공된 ` rule `는 ` 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()

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

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

converters 및 addConverter도 참조하십시오 .

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

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

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

기본적으로 다음 변환기가 제공됩니다:

상수설명
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빈 변환기.

addConverter 및 clearConverters도 참조하십시오 .

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

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

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

void QHttpServerRouter::removeConverter(QMetaType metaType)

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

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.