在此页面上

Qt OpenAPI

Qt OpenAPI 模块为使用Qt Network RESTful API 生成 Qt HTTP 客户端提供功能。该模块的主要功能是 Qt OpenAPI 生成器和预生成的OpenApiCommon 库。

Qt OpenAPI 生成器是OpenAPI 生成器的插件。通过它,您可以用 C++ 自动生成 Qt HTTP 客户端,并使用 Qt NetworkAPI 自动生成 Qt HTTP 客户端,如QRestAccessManager

注意: 6.11 版的 Qt OpenAPI 处于技术预览阶段,其 API 不在Qt 的兼容性承诺范围内。

使用模块

要使用 Qt 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 Qt6::Core generatedLibrary)

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

注意: OpenApiTools 库不需要链接到生成的openapiApplication 目标。不过,启用qt_add_openapi_clientcmake 函数时仍然需要它。

注意: OpenApiCommon 库是通过qt_add_openapi_client调用链接到目标的。

从命令行调用 Qt OpenAPI 生成器

要使用 Qt OpenAPI 生成器从 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 生成器添加到 classpath 中,使其对上游 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 生成器文档

示例

参考

本模块提供的是构建工具(CMake 命令)而非运行时 C++ API。有关可用命令,请参阅Qt6 OpenApi 中的 CMake 命令

许可证和归属

Qt OpenAPI 模块的不同部分有不同的许可证。

Qt OpenApiCommon 库可在The Qt Company 的商业许可下使用。此外,它还可根据GNU Lesser General Public License 第 3 版GNU General Public License 第 2 版提供。有关详细信息,请参阅Qt Licensing

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.