이 페이지에서

Qt OpenAPI

Qt OpenAPI 모듈은 Qt Network 의 RESTful API를 사용하여 Qt HTTP 클라이언트를 생성하는 기능을 제공합니다. 이 모듈의 주요 기능은 Qt OpenAPI 생성기와 미리 생성된 OpenApiCommon 라이브러리입니다.

Qt OpenAPI 생성기는 OpenAPI 생성기의 플러그인입니다. 이를 통해 Qt NetworkQRestAccessManager 과 같은 API를 사용하여 C++로 Qt HTTP 클라이언트를 자동 생성할 수 있게 해줍니다.

참고: Qt OpenAPI생성기는 OpenAPI 3.1.1 사양을 기준으로 합니다. 이는 작업 매개변수 및 null 허용 모델 속성과 같은 기능에 영향을 미칩니다.

참고: 6.12 버전의Qt OpenAPI는 기술 미리보기(Technology Preview) 단계에 있으므로, 해당 API는 Qt의 호환성 보장 대상에서 제외됩니다.

모듈 사용 방법

Qt OpenAPI 모듈을 사용하려면 다음 패키지를 설치해야 합니다:

/note Qt OpenAPI 생성기가 생성하는 코드는 현재 사용 중인 업스트림 OpenAPI 생성기의 버전에 따라 달라질 수 있습니다. 구버전 생성기는 일부 기능을 지원하지 않을 수 있습니다.

필요한 설치가 완료되면 프로젝트 내에서 Qt OpenAPI 생성기를 사용할 준비가 된 것입니다. Qt OpenAPI 생성기를 사용하여 OpenAPI 사양에서 클라이언트 코드를 생성하려면 프로젝트의 CMakeLists.txt 파일 내에서 qt_add_openapi_client 함수를 호출하십시오. 자세한 내용은 ‘CMake를 사용한 빌드’를 참조하십시오.

CMake를 사용한 빌드

qt_add_openapi_client 함수 사용

find_package() 명령어를 사용하여 Qt6 패키지 내에서 필요한 모듈 구성 요소를 찾으십시오. 그런 다음 qt_add_openapi_client 함수를 호출하여 필요한 Qt HTTP 클라이언트 라이브러리를 생성하십시오. 아래의 전체 CMake 코드 예제를 참조하십시오:

cmake_minimum_required(VERSION 3.22)

project(openapiApplication LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 REQUIRED COMPONENTS Core OpenApiCommon OpenApiTools)

qt_add_executable(openapiApplication
  main.cpp
)
qt_add_library(generatedLibrary)
qt_add_openapi_client(generatedLibrary
    SPEC_FILE
        ${CMAKE_CURRENT_SOURCE_DIR}/spec.yaml
)
target_link_libraries(openapiApplication PRIVATE Qt6::Core generatedLibrary)

include(GNUInstallDirs)
install(TARGETS openapiApplication
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

참고: OpenApiTools 라이브러리는 결과물인 openapiApplication 타깃에 링크될 필요는 없습니다. 하지만 qt_add_openapi_client CMake 함수를 활성화하기 위해서는 여전히 필요합니다.

참고: OpenApiCommon 라이브러리는 qt_add_openapi_client 호출을 통해 타깃에 링크됩니다.

명령줄에서 Qt OpenAPI Generator 호출하기

Qt OpenAPI Generator를 사용하여 OpenAPI 사양에서 클라이언트 코드를 생성하려면 다음 명령을 실행해야 합니다:

java -cp <path-to-installed-openapigen>/openapi-generator-cli.jar:<path-to-installed-qt>/<qt-version>/libexec/cpp-qt6-client-openapi-generator.jar \
org.openapitools.codegen.OpenAPIGenerator \
generate -g cpp-qt6-client \
--additional-properties=cppCommonNamespace=QtOpenApiCommon,prefix=QOAI \
-o generator_output/ -i file.yaml

위의 명령은 Qt OpenAPI 생성기를 클래스 경로에 추가하여 업스트림 OpenAPI 생성기가 이를 인식할 수 있게 한 다음, 메인 클래스인 org.openapitools.codegen.OpenAPIGenerator 를 호출합니다. Qt OpenAPI 생성기의 이름 cpp-qt6-client 을 -g 매개변수에 설정하면 생성기가 제대로 찾아져 호출됩니다.

매우 큰 규모의 OpenAPI 사양 파일에서 클라이언트 코드를 생성하려면, 아래와 같이 명령줄에 maxYamlCodePoints 옵션을 추가하십시오:

java -DmaxYamlCodePoints=99999999 <other arguments>

참고: 미리 생성된 Qt6::OpenApiCommon 라이브러리를 프로젝트에 링크하려면항상 --additional-properties=cppCommonNamespace=QtOpenApiCommon,prefix=QOAI 옵션을 추가해야 합니다. 이 라이브러리는 해당 매개변수로 빌드되었기 때문에, 다른 값을 지정하면 컴파일 오류가 발생합니다.

생성기는 generator_output 폴더에 클라이언트 라이브러리를 생성합니다. 다음 예시와 같이 generator_output 폴더를 프로젝트에 추가하십시오:

find_package(Qt6 REQUIRED COMPONENTS Core OpenApiCommon)
add_subdirectory(generator_output/client)
add_executable(example_binary
  main.cpp
)
target_link_libraries(Qt6OpenAPIClient PUBLIC Qt6::OpenApiCommon)
target_link_libraries(example_binary PRIVATE Qt6::Core Qt6OpenAPIClient)

모든 생성 옵션을 확인하려면 config-help 옵션을 사용할 수 있습니다. 아래를 참조하십시오:

java -cp <path-to-installed-openapigen>/openapi-generator-cli.jar:<path-to-installed-qt>/<qt-version>/libexec/cpp-qt6-client-openapi-generator.jar \
org.openapitools.codegen.OpenAPIGenerator config-help -g cpp-qt6-client

참고: 생성기 사용법에 대한 자세한 내용은 OpenAPI 생성기 문서에서 확인할 수있습니다 .

보안 고려 사항

Qt OpenAPI를 사용할 때는 다음과 같은 보안 관련 사항을 고려하십시오:

예제

참조

이 모듈은 런타임 C++ API가 아닌 빌드 도구(CMake 명령어)를 제공합니다. 사용 가능한 명령어에 대해서는 Qt6 OpenAPI의 CMake 명령어를 참조하십시오.

라이선스 및 출처 표기

Qt OpenAPI 모듈의 각 부분은 서로 다른 라이선스 하에 제공됩니다.

Qt OpenApiCommon 라이브러리는 The Qt Company의 상용 라이선스에 따라 제공됩니다. 또한, 이 라이브러리는 GNU Lesser General Public License 버전 3 또는 GNU General Public License 버전 2에 따라 제공됩니다. 자세한 내용은 Qt 라이선스를 참조하십시오.

Qt OpenAPI Generator 플러그인과 코드 생성을 위한 템플릿 파일( .mustache 확장자를 가짐)은 업스트림 OpenAPI 생성기 프로젝트에서 파생되었으며, Apache License 2.0에 따라 라이선스가 부여됩니다.

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