このページでは

Qt OpenAPI

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

Qt OpenAPIジェネレータは、OpenAPIジェネレータ用のプラグインです。これにより、 Qt NetworkQRestAccessManager などのAPIを用いて、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_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 ジェネレータのドキュメントを参照してください 。

セキュリティに関する考慮事項

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.