Sur cette page

Qt OpenAPI

Le module Qt OpenAPI fournit des fonctionnalités permettant de générer des clients Qt HTTP utilisant les API RESTful de Qt Network. Les principales caractéristiques du module sont le générateur Qt OpenAPI et la bibliothèque pré-générée OpenApiCommon.

Le générateur Qt OpenAPI est un plugin du générateur OpenAPI. Il vous permet d'autogénérer des clients HTTP Qt en C++ à l'aide d'API telles que Qt Network API telles que QRestAccessManager.

Note : Qt OpenAPI dans la version 6.11 est en Technical Preview, ce qui exclut son API des promesses de compatibilité de Qt.

Utilisation du module

L'installation des paquets suivants est nécessaire pour utiliser le module Qt OpenAPI :

Une fois les installations requises effectuées, le générateur Qt OpenAPI est prêt à être utilisé dans vos projets. Pour générer du code client à partir d'une spécification OpenAPI en utilisant le générateur Qt OpenAPI, appelez la fonction qt_add_openapi_client dans le fichier CMakeLists.txt de votre projet. Voir Construire avec CMake pour plus de détails.

Construction avec CMake

Utilisation de la fonction qt_add_openapi_client

Utilisez la commande find_package() pour localiser les composants du module nécessaire dans le paquetage Qt6. Ensuite, appelez la fonction qt_add_openapi_client pour générer la bibliothèque client Qt HTTP requise. Voir l'exemple de code CMake complet ci-dessous :

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}
)

Remarque : la bibliothèqueOpenApiTools n'a pas besoin d'être liée à la cible openapiApplication résultante. Cependant, elle est toujours nécessaire pour activer la fonction cmake qt_add_openapi_client.

Note : La bibliothèqueOpenApiCommon est liée à la cible par l'appel à qt_add_openapi_client.

Appel du générateur Qt OpenAPI à partir de la ligne de commande

Pour générer du code client à partir d'une spécification OpenAPI en utilisant le Qt OpenAPI Generator, vous devez exécuter la commande suivante :

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

La commande ci-dessus ajoute le générateur Qt OpenAPI au chemin de classe, ce qui le rend visible au générateur OpenAPI en amont, puis invoque la classe principale org.openapitools.codegen.OpenAPIGenerator. La définition du nom du générateur Qt OpenAPI cpp-qt6-client dans le paramètre -g permet de s'assurer qu'il sera trouvé et appelé.

Pour générer du code client à partir d'un fichier de spécification OpenAPI très volumineux, ajoutez l'option maxYamlCodePoints à la ligne de commande, voir ci-dessous :

java -DmaxYamlCodePoints=99999999 <other arguments>

Remarque : ajoutez toujours --additional-properties=cppCommonNamespace=QtOpenApiCommon,prefix=QOAI si vous souhaitez lier la bibliothèque pré-générée Qt6::OpenApiCommon au projet, car elle a été construite avec ces paramètres et vous obtiendrez des erreurs de compilation si vous fournissez des valeurs différentes.

Le générateur crée la bibliothèque client dans le dossier generator_output. Ajoutez le dossier generator_output au projet, comme indiqué dans l'exemple suivant :

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)

Si vous voulez voir toutes les options de génération, vous pouvez utiliser l'option config-help, voir ci-dessous :

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

Note : Vous pouvez trouver plus d'informations sur l'utilisation du générateur dans la documentation du générateur OpenAPI.

Exemples de Qt OpenAPI

Référence

Ce module fournit des outils de construction (commandes CMake) plutôt qu'une API C++ d'exécution. Voir CMake Commands in Qt6 OpenApi pour les commandes disponibles.

Licences et attributions

Différentes parties du module Qt OpenAPI sont disponibles sous différentes licences.

La bibliothèque Qt OpenApiCommon est disponible sous licence commerciale auprès de The Qt Company. En outre, elle est disponible sous la licence GNU Lesser General Public License, version 3, ou la licence GNU General Public License, version 2. Voir Qt Licensing pour plus de détails.

Le plugin Qt OpenAPI Generator, ainsi que les fichiers modèles pour la génération de code (qui ont l'extension .mustache ), sont dérivés du projet OpenAPI generator en amont, et sont sous licence 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.