Sur cette page

Qt OpenAPI

Le module Qt OpenAPI fournit des fonctionnalités permettant de générer des clients HTTP Qt à partir d'API RESTful Qt Network. Les principales fonctionnalités 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 permet de générer automatiquement des clients HTTP Qt en C++ à partir d’ Qt Network des API telles que QRestAccessManager.

Remarque : le générateur Qt OpenAPI utilise la spécification OpenAPI 3.1.1 comme référence. Cela a une incidence sur certaines fonctionnalités, telles que les paramètres d’opération et les propriétés de modèle pouvant être nulles.

Remarque : Qt OpenAPI dans la version 6.12 est en préversion technologique (Technology Preview), ce qui exclut son API des engagements de compatibilité de Qt.

Utilisation du module

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

/note Le code généré par le générateur Qt OpenAPI peut varier d'une version à l'autre, car il dépend de la version du générateur OpenAPI en amont actuellement utilisée. Les anciennes versions du générateur peuvent ne pas prendre en charge certaines fonctionnalités.

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 à l'aide du générateur Qt OpenAPI, appelez la fonction `qt_add_openapi_client` dans le fichier `CMakeLists.txt` de votre projet. Consultez la section « Compilation avec CMake » pour plus de détails.

Compilation avec CMake

Utilisation de la fonction ` qt_add_openapi_client `

Utilisez la commande ` find_package() ` pour localiser les composants de module nécessaires dans le paquet Qt6. Appelez ensuite la fonction ` qt_add_openapi_client ` pour générer la bibliothèque client HTTP Qt requise. Consultez 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 PRIVATE Qt6::Core generatedLibrary)

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

Remarque : la bibliothèque` OpenApiTools ` n’a pas besoin d’être liée à la cible ` openapiApplication ` résultante. Elle reste toutefois nécessaire pour activer la fonction CMake ` qt_add_openapi_client `.

Remarque : la bibliothèqueOpenApiCommon est liée à la cible par l’appel à qt_add_openapi_client.

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

Pour générer du code client à partir d’une spécification OpenAPI à l’aide du générateur Qt OpenAPI, 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 classpath, ce qui le rend visible pour le 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 garantit qu’il sera détecté 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, comme indiqué ci-dessous :

java -DmaxYamlCodePoints=99999999 <other arguments>

Remarque : ajouteztoujours --additional-properties=cppCommonNamespace=QtOpenApiCommon,prefix=QOAI si vous souhaitez lier la bibliothèque Qt6::OpenApiCommon pré-générée au projet, car celle-ci a été compilée 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 cliente 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 souhaitez voir toutes les options de génération, vous pouvez utiliser l'option « config-help », comme indiqué 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

Remarque : vous trouverez plus d'informations sur l'utilisation du générateur dans la documentation du générateur OpenAPI.

Considérations relatives à la sécurité

Lorsque vous utilisez Qt OpenAPI, tenez compte des aspects suivants liés à la sécurité :

Exemples

Référence

Ce module fournit des outils de compilation (commandes CMake) plutôt qu'une API C++ d'exécution. Consultez la section « Commandes CMake » dans Qt6 OpenAPI pour connaître les commandes disponibles.

Licences et mentions

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

La bibliothèque Qt OpenApiCommon est disponible sous des licences commerciales auprès de The Qt Company. Elle est également disponible sous la licence GNU Lesser General Public License, version 3, ou la licence GNU General Public License, version 2. Consultez la section Licences Qt pour plus de détails.

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