このページでは

ColorPalette RESTful APIクライアント

OpenAPIクライアントコードを生成し、アプリケーションに統合する方法の例。

色見本、色名、16進RGB値、Pantone値、アクションボタンを備えたカラーパレットテーブル

この例では、Qt OpenAPI ジェネレータを使って、colorpalette.yaml 仕様から RESTful API クライアントコードを生成し、QML アプリケーションに統合する方法を示します。その構成と UI は、Qt Quick Demo - RESTful API clientexample と密接に一致しているので、ネットワーキングと統合アプローチの違いを簡単に識別することができます。

例の実行

からサンプルを実行するには Qt Creatorからサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Qt Creator:Tutorialを参照してください:ビルドと実行

アプリケーションの機能

このサンプルは、Qt Quick Demo - RESTful API クライアントと同じ基本機能を提供します。

サーバーの選択

起動時に、Color Paletteクライアントが通信可能な、定義済みのサーバーオプションを提示します:

サーバーを選択し、Connect ボタンを押すと、RESTful API クライアントはテスト HTTP GET リクエストを発行し、サーバーが利用可能であることを確認します。サーバーが実行されていない場合、アプリケーションはサーバー選択ビューに留まります。

QtベースのREST APIサーバーオプションと接続ボタンを備えたサーバー選択ダイアログ

OpenAPI 仕様からのクライアント・コードの生成

CMakeLists.txt ファイルは Qt OpenAPI ジェネレーターを起動し、qt6_add_openapi_client関数を呼び出してcolorpalette.yaml 仕様からクライアントコードを生成します。

qt_add_openapi_client(ColorpaletteClientExample
    SPEC_FILE
        ${CMAKE_CURRENT_SOURCE_DIR}/colorpalette.yaml
)

生成された API クラスColorsApiUsersApi は、すべての低レベル HTTP の詳細を処理します:

  • サーバー設定
  • すべての標準 HTTP メソッドに対する HTTP リクエストの作成
  • 仕様に従った入力パラメータのシリアライズ
  • 型付きオブジェクトへのサーバー・レスポンスのデシリアライズ
  • 成功とエラーはQtシグナルを通して報告されます。

QtNetworkAuth API を直接使用する他のバージョンの例と比較すると、このアプローチでは手作業による ネットワークリクエストの作成が不要になります。

生成されたAPIをQMLに公開する

生成された API クラスColorsApiUsersApi は、ApiBridges.h で定義されたヘルパークラスを通して QML に公開されます。各ヘルパーはQML_FOREIGN マクロを使用し、C++ のインスタンスをシングルトンとして登録します。このトピックの詳細については、Qt QML documentation onexposing an existing object as a singleton を参照してください。

struct ForeignColorsAPI
{
    Q_GADGET
    QML_FOREIGN(QtOpenAPI::ColorsApi)
    QML_SINGLETON
    QML_NAMED_ELEMENT(ColorsApi)

};

QMLからAPIを利用する

一度登録されたAPIは、QMLの中でグローバルに利用することができます。これにより QML コンポーネントは、以下のようにColorsApiUsersApi に直接アクセスし、それらのメソッドを呼び出すことができるようになります:

ColorsApi.getColors(page)

各APIメソッドは操作の成功・失敗時にシグナルを発し、QMLコンポーネントは サーバからの応答を処理することができます:

function onAddColorFinished() {
    root.fetchColors(root.currentColorPage)
}

function onAddColorErrorOccurred(errorType, errorStr) {
    root.handleError(errorStr)
}
ヘルパーのシングルトン型

APIメソッドの中には、CredentialsColor のように、自明でない型をパラメータとして受け取るものがあります。この例では、そのような型のインスタンスを構築するためのQMLシングルトンをApiBridges.h に用意しています:

class Credentials: public QObject
{
    Q_OBJECT
    QML_ELEMENT
    QML_SINGLETON
public:
    Q_INVOKABLE QtOpenAPI::Credentials create(const QString &email, const QString &password)
    {
        QtOpenAPI::Credentials credentials;
        credentials.setEmail(email);
        credentials.setPassword(password);
        return credentials;
    }
};

これらのシングルトンは、APIメソッドを呼び出す際にQMLで使用することができます。例えば、Credentials はログイン前に認証情報オブジェクトを生成するために使用されます:

let credentials = Credentials.create(userInfo.model.email, "apassword");
UsersApi.loginUser(credentials);

ソースファイル

サンプルプロジェクト @ code.qt.io

すべての Qt サンプルQt Quick Demo - RESTful API clientRESTful API Serverも参照してください

© 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.