Qt HTTP Server
Qt HTTP Server 는 애플리케이션에 HTTP 서버 기능을 구축하는 것을 지원합니다. 일반적인 사용 사례는 REST API를 통해 애플리케이션의 기능을 노출하거나 신뢰할 수 있는 환경의 디바이스를 HTTP를 통해서도 구성할 수 있도록 만드는 것입니다. 제한 사항은 제한 사항 및 보안에 설명되어 있습니다.
개요
Qt HTTP Server 는 애플리케이션에 RFC 2616 및 RFC 9113에 기반한 경량 HTTP 서버를 임베드하기 위한 빌딩 블록을 제공합니다. 주고받는 메시지와 HTTP 서버의 다양한 부분에 대한 클래스가 있습니다.
QHttpServer 클래스에는 여러 수신 URL에 콜러블을 바인딩하는 route() 함수가 있습니다. 이러한 콜러블은 URL에서 파싱된 다양한 복사 가능한 타입의 extensible 컬렉션을 인자로 받을 수 있습니다. 지원되는 유형은 대부분의 숫자 유형, QString, QByteArray, QUrl 입니다. 선택적으로 콜러블은 QHttpServerRequest 및 QHttpServerResponder 객체를 인자로 받을 수도 있습니다. QHttpServerRequest 클래스는 들어오는 요청의 모든 정보를 포함하며 POST HTTP 요청에서 body()를 가져오는 데 필요합니다. 콜러블은 QHttpServerResponse 객체를 반환하거나 QHttpServerResponder 인수를 사용하여 응답합니다. QHttpServerResponse 클래스는 완전한 응답을 포함하며 다양한 유형에 대한 수많은 생성자를 가지고 있고, QHttpServerResponder 클래스는 클라이언트에 다시 쓰기 위한 다양한 메서드를 가지고 있습니다.
QHttpServer 클래스에는 QHttpServerResponse 를 추가로 처리하는 addAfterRequestHandler() 함수와 일치하는 경로가 없을 때 404 Not Found
를 반환하는 기본 동작을 재정의하는 setMissingHandler() 함수도 있습니다. QAbstractHttpServer 클래스로부터 bind() 함수를 상속받아 QTcpServer, QSslServer, 또는 QLocalServer 수신에 바인딩합니다.
QAbstractHttpServer 클래스를 서브클래싱하고 handleRequest() 및 missingHandler() 함수를 재정의하여 HTTP 서버를 생성할 수도 있습니다.
런타임 로깅은 여기에 설명된 대로 구성할 수 있습니다.
제한 및 보안
Qt HTTP Server 에는 범용 HTTP 서버에 있는 고급 기능 및 최적화 기능이 많지 않습니다. 또한 네트워크를 통한 다양한 공격 경로에 대한 면밀한 조사가 이루어지지 않았습니다. 따라서 Qt HTTP Server 은 로컬 연결이나 신뢰할 수 있는 네트워크에서만 사용하고 포트를 인터넷에 노출하지 마세요.
하지만 기본 보안 조치로 HTTPS 지원을 추가할 수 있습니다. Qt가 TLS를 지원하도록 컴파일된 경우, HTTP 서버를 QSslServer 객체에 바인딩하여 전송 계층 보안 처리를 제공할 수 있습니다.
HTTP/2 지원을 위해서는 활성 TLS 백엔드의 QSslSocket::SupportedFeature::ServerSideAlpn 기능이 필요합니다. 백엔드가 이를 지원하는지 확인하려면 QSslSocket::isFeatureSupported 을 사용하세요.
모듈 사용하기
Qt 모듈을 사용하려면 직접 또는 다른 종속성을 통해 모듈 라이브러리에 연결해야 합니다. CMake 및 qmake를 비롯한 여러 빌드 도구가 이를 지원합니다.
CMake로 빌드하기
find_package()
명령을 사용하여 Qt6 패키지에서 필요한 모듈 컴포넌트를 찾습니다:
find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
CMake로 빌드 개요를 참조하세요.
qmake로 빌드하기
qmake로 빌드하도록 모듈을 구성하려면 프로젝트의 .pro 파일에서 모듈을 QT 변수의 값으로 추가합니다:
QT += httpserver
라이선스
Qt HTTP Server 는 Qt Company의 상용 라이센스에 따라 사용할 수 있습니다. 또한 GNU 일반 공중 사용 허가서 버전 3에 따라 사용할 수 있습니다. 자세한 내용은 Qt 라이선스를 참조하십시오.
참조
예제
이 모듈은 API 사용에 대한 가이드로 다음 예제를 제공합니다.
© 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.