이 페이지에서는

Qt HTTP Server

Qt HTTP Server 에서는 애플리케이션에 HTTP 서버 기능을 구축하는 방법을 다룹니다. 주요 사용 사례는 REST API를 통해 애플리케이션의 기능을 공개하거나, 신뢰할 수 있는 환경 내의 장치를 HTTP를 통해 구성할 수 있도록 하는 것입니다. 여기서 '신뢰할 수 있는 환경'이란 Qt HTTP Server 이 인터넷에 직접 노출되어서는 안 되며, 최종 사용자를 위한 범용 웹 서버의 기능을 제공하는 데 사용되어서도 안 된다는 것을 의미합니다. 자세한 내용은 ‘제한 사항 및 보안’을 참조하십시오.

개요

Qt HTTP Server 는 애플리케이션에 HTTP/2, HTTP/1.1 및 HTTP/1.0을 지원하는 경량 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 클래스에서 리스닝 중인 QTcpServer, QSslServer 또는 QLocalServer 에 바인딩하는 bind() 함수를 상속받습니다.

QAbstractHttpServer 클래스를 상속하여 handleRequest() 및 missingHandler() 함수를 재정의함으로써 HTTP 서버를 생성할 수도 있습니다.

런타임 로깅은 여기에서 설명된 대로 구성할 수 있습니다.

제한 사항 및 보안

Qt HTTP Server 에는 범용 HTTP 서버가 가진 고급 기능과 최적화 기능이 많이 포함되어 있지 않습니다. 또한 네트워크를 통한 다양한 공격 경로에 대해서도 철저한 검증을 거치지 않았습니다. 따라서 Qt HTTP Server 는 로컬 연결이나 신뢰할 수 있는 네트워크에서만 사용하고, 포트를 인터넷에 노출하지 마십시오.

다만 기본적인 보안 조치로 HTTPS 지원을 추가할 수는 있습니다. Qt가 TLS를 지원하도록 컴파일된 경우, HTTP 서버를 QSslServer 객체에 바인딩하여 TLS(전송 계층 보안) 처리를 제공할 수 있습니다.

HTTP/2를 지원하려면 활성 TLS 백엔드의 ` QSslSocket::SupportedFeature::ServerSideAlpn ` 기능이 필요합니다. 백엔드가 이를 지원하는지 확인하려면 ` QSslSocket::isFeatureSupported`를 사용하십시오.

‘Qt HTTP Server 보안 고려 사항’을 참조하십시오.

모듈 사용

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 는 The Qt Company의 상용 라이선스 하에 제공됩니다. 또한 GNU 일반 공중 사용 허가서(GNU General Public License) 버전 3에 따라 사용할 수 있습니다. 자세한 내용은 Qt 라이선싱을 참조하십시오.

참고

예제

이 모듈은 API 사용 지침으로 다음과 같은 예제를 제공합니다.

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