QodlyのREST APIを簡単に使う

数ヶ月前、Qodly Studioが全てのシルバーパートナー(およびそれ以上)の皆様にご利用いただけるようになったということを発表しました。

Qodly Studio for 4Dは4Dに完全に統合されており、4D Serverにおいてデスクトップアプリとウェブページの両方でアプリケーションをホストすることができます。

Qodly Studioは、4Dが新しく開始したSaaSサービスの一環として、Qodly のWebサイトからもアクセスできます。この革新的なハイブリッドローコードソリューションは、ウェブブラウザベースのビジネスアプリケーションのために特別に設計されたものです。

既にQodlyプラットフォームを使ってアプリケーションを構築された方にも朗報です!4D 20R5では、QodlyアプリケーションのREST APIを利用して、データをシームレスに扱うことができるようになりました。

詳細は以下をご覧ください。

HDI_Qodly_App_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インターフェイスを使用して、定義されたデータに対して特定のアクションの実行を許可するロール(役割)を設定します。

blank

Employeeロールは「simple」権限レベルを持つため、productデータクラスの読み取りが許可されます。

blank

 

blank

 

クライアントアプリケーションがProductsというQodlyアプリREST APIを使用できるように、QodlyダッシュボードのProductsにおいてEmployee ロールに関連付けられたAPIキーを以下のように生成します:

blank

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アプリケーションでの結果です:

blank

qodlyアプリのrest APIを、RESTリクエストを扱う任意のアプリケーションから使用する

以下の例では、Postmanを使ってQodlyアプリケーションのREST APIをターゲットにRESTリクエストを実行する方法を示しています。また付属するHDIデモでは、HTTPRequest クラス、JavaScript、またはその他のテクノロジーを使ってこのようなリクエストを実行する方法も示しています。

APIキーは各RESTリクエストの“api-key “ヘッダーに渡さなければならないことに注意してください。

blank

 

上記の例ではデータの読み取りを紹介していますが、REST API を使用してデータの作成、更新、削除を行うこともできます。

詳細はこちら

Qodlyでのサンドボックス・デモの作成からREST APIの使用までの完全な紹介については、こちらのビデオをご覧ください。

より詳細な情報や最新のアップデートを知るためには、Qodlyウェブサイトをご覧ください!

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。