このページでは

Qt OpenAPI

Qt OpenAPI モジュールは、Qt Network RESTful API を使用して Qt HTTP クライアントを生成する機能を提供します。モジュールの主な機能は、Qt OpenAPI ジェネレータと生成済みのOpenApiCommon ライブラリです。

Qt OpenAPI ジェネレータは、OpenAPI ジェネレータのプラグインです。を使用して、C++ で Qt HTTP クライアントを自動生成することができます。 Qt NetworkQRestAccessManagerAPI を使って、C++ で Qt HTTP クライアントを自動生成できます。

注意: 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}
)

Note: OpenApiTools ライブラリは、生成されたopenapiApplication ターゲットにリンクする必要はありません。しかし、qt_add_openapi_clientcmake関数を有効にするためには必要です。

注意: 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 ジェネレーターのドキュメントを参照してください。

リファレンス

このモジュールは、ランタイムの C++ API ではなく、ビルドツール(CMake コマンド)を提供します。利用可能なコマンドについてはQt6 OpenApi の CMake コマンドを参照してください。

ライセンスと帰属

Qt OpenAPI モジュールの異なる部分は、異なるライセンスの下で利用可能です。

Qt OpenApiCommon ライブラリは、The Qt Company の商用ライセンスで利用できます。さらに、GNU Lesser General Public License, version 3 またはGNU General Public License, version 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.