数ヶ月前、Qodly Studioが全てのシルバーパートナー(およびそれ以上)の皆様にご利用いただけるようになったということを発表しました。 。
Qodly Studio for 4Dは4Dに完全に統合されており、4D Serverにおいてデスクトップアプリとウェブページの両方でアプリケーションをホストすることができます。
Qodly Studioは、4Dが新しく開始したSaaSサービスの一環として、Qodly のWebサイトからもアクセスできます。この革新的なハイブリッドローコードソリューションは、ウェブブラウザベースのビジネスアプリケーションのために特別に設計されたものです。
既にQodlyプラットフォームを使ってアプリケーションを構築された方にも朗報です!4D 20R5では、QodlyアプリケーションのREST APIを利用して、データをシームレスに扱うことができるようになりました。
詳細は以下をご覧ください。
主な動作原理
ロールと権限のシステム
この機能は、4D 19 R8に搭載されているロールと権限のシステムに結びついたAPIキーのメカニズムに基づいています。これは、不正なユーザーからデータを保護するための強力で完全にカスタマイズ可能なシステムです。データへのアクセスは、誰がアクセスしているか、そしてどのデータにアクセスするかによって許可されます。 これはロールを設定することによって行われます。
始める前に、この機能についての基本的な知識を踏まえておきましょう。
qodlyダッシュボードでAPIキーを扱う
Qodlyダッシュボードでは、RESTアクセス用のエンドポイントURLが与えられています。
また、APIキーを生成して、それをロールに関連付けることもできます。このAPIキーを使用すると、Qodlyアプリで公開されているデータへのREST経由のアクセスが可能になり、 関連付けられた ロールに対して許可されているすべてのアクションを実行できるようになります。
APIキーに関連するその他の機能(有効期限の設定、特定のクライアントIPの認可など)については、Qodlyのドキュメントも参照してください。
Qodly アプリケーションの REST API を使用する
QodlyアプリのREST APIは以下から利用できます:
- 4D Server アプリケーション(Open datastore コマンドまたはHTTPRequest クラスを使用します。)
- RESTリクエストをサポートするサードパーティアプリケーション
シナリオ
商品を管理するQodlyアプリがあり、Productデータクラスを公開しているとします。4Dサーバーアプリケーション(ファクトリー)は、REST APIを使用してProductテーブルを読み込んだり書き込んだりする必要があるとします。ProductsというQodlyアプリは、ロールと権限システムを通して不正アクセスから保護されています。
REST APIへのアクセスを準備する
まず、Qodly StudioのRoles and Privilegesインターフェイスを使用して、定義されたデータに対して特定のアクションの実行を許可するロール(役割)を設定します。
Employeeロールは「simple」権限レベルを持つため、productデータクラスの読み取りが許可されます。
クライアントアプリケーションがProductsというQodlyアプリREST APIを使用できるように、QodlyダッシュボードのProductsにおいてEmployee ロールに関連付けられたAPIキーを以下のように生成します:
4D SERVERアプリでOPEN DATASTOREコマンドを使用して、ProductのQodlyアプリのREST APIを使用する
4D Serverクライアントアプリケーション(Factory)で、製品の一覧を表示したい場合を考えます。
これがそのための4Dコードです:
Form.products:=ds.getProducts("Employee")
そして、これがDataStoreクラスです:
Class extends DataStoreImplementation
exposed Function getProductsDatastore($apiKey : Text; $id : Text) : 4D.DataStoreImplementation
// Qodly ダッシュボードで取得したエンドポイントURL
var $connect : Object:={hostname: "https://xxx-yyyyyyyy-zzzz-xxxx-yyyy-zzzzzzzzzzzz.xx-yyy.acme.com"; tls: True}
var $theRemoteDS : 4D.DataStoreImplementation
$connect["api-key"]:=$apiKey
$theRemoteDS:=Open datastore($connect; $id)
return $theRemoteDS
exposed Function getProducts($role : Text) : 4D.EntitySelection
var $apiKey : Text
var $theRemoteDS : 4D.DataStoreImplementation
$apiKey:="82c0abfe-0628-4446-b890-9add5509335c"
$theRemoteDS:=This.getProductsDatastore($apiKey; $role)
return $theRemoteDS.product.all()
getProducts() 関数では、Employeeロールに対応する API キーを使用します。
getProductsDatastore() を使用することで、ProductsQodlyアプリに対応するデータストアオブジェクトを取得することができます。このProductsインスタンスでセッションが開かれます。このオブジェクトには、Employeeロールの権限が格納されています。
このデータストア・オブジェクトを使用して、Employeeロールに許可されているすべてのアクションを実行することがでできます。
注意
– API キーは、Open datastore コマンドを呼び出すときに(接続オブジェクトの“api-key”プロパティとして) 1 回だけ指定する必要があります。
– ProductsインスタンスのQodlyダッシュボードで取得したエンドポイントURLはホスト名として使用されます。
– ここの例では分かりやすさのために、コード内にAPIキーをハードコードした値として使用しています。セキュリティ上の観点から、本来このAPIキーは(例えばGitHub上では同期されないような)外部の保護されたファイルに保存する必要があります。
これが4D Serverアプリケーションでの結果です:
qodlyアプリのrest APIを、RESTリクエストを扱う任意のアプリケーションから使用する
以下の例では、Postmanを使ってQodlyアプリケーションのREST APIをターゲットにRESTリクエストを実行する方法を示しています。また付属するHDIデモでは、HTTPRequest クラス、JavaScript、またはその他のテクノロジーを使ってこのようなリクエストを実行する方法も示しています。
APIキーは各RESTリクエストの“api-key “ヘッダーに渡さなければならないことに注意してください。
上記の例ではデータの読み取りを紹介していますが、REST API を使用してデータの作成、更新、削除を行うこともできます。
詳細はこちら
Qodlyでのサンドボックス・デモの作成からREST APIの使用までの完全な紹介については、こちらのビデオをご覧ください。
より詳細な情報や最新のアップデートを知るためには、Qodlyウェブサイトをご覧ください!