Auf dieser Seite

Qt OpenAPI

Das Qt OpenAPI-Modul bietet Funktionen zur Erstellung von Qt HTTP-Clients unter Verwendung von Qt Network RESTful APIs. Die Hauptmerkmale des Moduls sind der Qt OpenAPI Generator und die vorgenerierte OpenApiCommon Bibliothek.

Der Qt OpenAPI Generator ist ein Plugin für den OpenAPI Generator. Er ermöglicht die automatische Generierung von Qt HTTP-Clients in C++ unter Verwendung von Qt Network APIs wie QRestAccessManager zu erstellen.

Hinweis: Qt OpenAPI in 6.11 befindet sich in der technischen Vorschau, wodurch seine API von den Kompatibilitätsversprechen von Qt ausgeschlossen ist.

Verwendung des Moduls

Die Installation der folgenden Pakete ist notwendig, um das Qt OpenAPI-Modul zu verwenden:

Sobald Sie die erforderlichen Installationen vorgenommen haben, ist der Qt OpenAPI-Generator für die Verwendung in Ihren Projekten bereit. Um Client-Code aus einer OpenAPI-Spezifikation mit dem Qt OpenAPI Generator zu generieren, rufen Sie die Funktion qt_add_openapi_client in der Datei CMakeLists.txt Ihres Projekts auf. Siehe Bauen mit CMake für Details.

Bauen mit CMake

Verwendung der Funktion qt_add_openapi_client

Verwenden Sie den Befehl find_package(), um die benötigten Modulkomponenten im Qt6-Paket zu finden. Rufen Sie dann die Funktion qt_add_openapi_client auf, um eine erforderliche Qt HTTP-Client-Bibliothek zu erzeugen. Siehe das vollständige CMake-Codebeispiel unten:

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

Hinweis: DieOpenApiTools Bibliothek muss nicht mit dem resultierenden openapiApplication Ziel verknüpft werden. Sie ist aber dennoch erforderlich, um die cmake-Funktion qt_add_openapi_client zu aktivieren.

Hinweis: DieOpenApiCommon Bibliothek wird durch den Aufruf von qt_add_openapi_client mit dem Target gelinkt.

Aufrufen des Qt OpenAPI Generators von der Kommandozeile

Um Client-Code aus einer OpenAPI-Spezifikation mit dem Qt OpenAPI Generator zu erzeugen, sollten Sie den folgenden Befehl ausführen:

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

Der obige Befehl fügt den Qt OpenAPI Generator zum Klassenpfad hinzu, wodurch er für den vorgeschalteten OpenAPI Generator sichtbar wird, und ruft dann die Hauptklasse org.openapitools.codegen.OpenAPIGenerator auf. Das Setzen des Namens des Qt OpenAPI-Generators cpp-qt6-client auf den Parameter -g stellt sicher, dass er gefunden und aufgerufen wird.

Um Client-Code aus einer besonders großen OpenAPI-Spezifikationsdatei zu generieren, fügen Sie die Option maxYamlCodePoints zur Befehlszeile hinzu, siehe unten:

java -DmaxYamlCodePoints=99999999 <other arguments>

Hinweis: Fügen Sie immer --additional-properties=cppCommonNamespace=QtOpenApiCommon,prefix=QOAI hinzu, wenn Sie die vorgenerierte Bibliothek Qt6::OpenApiCommon mit dem Projekt verknüpfen wollen, da sie mit diesen Parametern erstellt wurde und Sie Kompilierungsfehler erhalten, wenn Sie andere Werte angeben.

Der Generator erstellt die Client-Bibliothek im Ordner generator_output. Fügen Sie den Ordner generator_output zum Projekt hinzu, wie im folgenden Beispiel gezeigt:

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)

Wenn Sie alle Generierungsoptionen sehen möchten, können Sie die Option config-help verwenden, siehe unten:

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

Hinweis: Weitere Informationen über die Verwendung des Generators finden Sie in der Dokumentation des OpenAPI-Generators.

Beispiele

Referenz

Dieses Modul bietet Build-Tools (CMake-Befehle) und keine C++-API zur Laufzeit. Siehe CMake-Befehle in Qt6 OpenApi für die verfügbaren Befehle.

Lizenzen und Zuschreibungen

Verschiedene Teile des Qt OpenAPI-Moduls sind unter verschiedenen Lizenzen verfügbar.

Die Qt OpenApiCommon Bibliothek ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus ist sie unter der GNU Lesser General Public License, Version 3, oder der GNU General Public License, Version 2, erhältlich. Siehe Qt Licensing für weitere Details.

Das Qt OpenAPI Generator-Plugin sowie die Vorlagendateien für die Codegenerierung (mit der Erweiterung .mustache ) stammen vom Upstream OpenAPI Generator-Projekt und stehen unter der 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.