ネイティブマイクロフローアクションでRESTサービスを利用する
- 2016 年 6 月 29 日
- 分読み
Mendix 6.6には、RESTサービスの呼び出しとデータの処理に役立つ主要な新機能が含まれています。これは当初、 Mendix 7 ですが、コミュニティがこの機能に非常に熱心であるため、今すぐリリースすることにしました。
新しいリリースでは、新しいマイクロフロー アクションを使用して REST サービスを呼び出すことができます。REST 応答は JSON 形式であることが多いため、データ マッピング ドキュメントを拡張して、XML だけでなく JSON も処理できるようにしました。
RESTとインターネット
REpresentational State Transfer (REST) の背後にある考え方は、インターネットの初期のアーキテクチャである HyperText Transfer Protocol (HTTP) に非常に近いものです。HTTP は、サーバーからクライアントへ、またその逆方向にコンテンツを転送するために設計されました。初期の頃は、コンテンツはテキストで HTML (HyperText Markup Language) 形式であることがよくありました。コンテンツはサーバー上に保存され、アドレス (URL (Universal Resource Locator)) によって一意に識別されていました。たとえば、ブラウザーに URL を入力すると、Web ページが表示されます。また、ファイルをサーバーにアップロードするときに、URL にデータを投稿することもできます。
この最初のアイデアを一般化すると、REST の意味を理解できます。重要な要素は 6 つあります。
- 州/地域これはサーバー上のリソースであり、何らかの内部形式で保存されます。例: データベース内の製品データ。
- 表現サーバー上のすべてのデータが関連しているわけではありません。多くの場合、データはフィルタリングされ、クライアントが理解できる一般的な形式で送信される必要があります。データの表現はインターネット経由で送信されます。一般的な表現には、XML、JSON、HTML、または画像や PDF ファイルなどのバイナリ データがあります。
- URLリソースへの一意のアドレス。
- 方法HTTP リクエスト内のテキスト動詞で、リソースに対して何を行うかを示します。例:
GETリソース、POST新しいリソース、PUT更新されたリソース、PATCH小さな変化を起こすためのリソースやDELETEリソース。この動詞は HTTP メッセージに文字通り記述されます。 - ヘッダHTTPヘッダーはメッセージに追加情報を与えます。例えば、
Content-Type: application/jsonメッセージの表現が JSON 形式であることを指定します。 - 状態コードHTTP応答メッセージに追加される単純な数字。例: 200はOK、404は
Resource not found.
例: ペットショップ
REST を使い始めるための簡単な例として、Swagger の Petstore があります。これは、インターネット上の誰もが自分のペットの説明を送信し、他の人のペットを見ることができるパブリック REST の例です。
GEThttps://petstore.swagger.io/v2/pet/100 returns a pet.POSThttps://petstore.swagger.io/v2/pet adds a new pet to the store.DELETEhttps://petstore.swagger.io/v2/pet/101 deletes a pet.
Mendix モデラーでは、 RESTアクションを呼び出す マイクロフローに追加します。場所 (URL)、HTTP メソッド、HTTP ヘッダーを指定できます。下の画像を参照してください。
上記の URL に GET リクエストを行うと、ID 100 のペットの表現が JSON 形式で返されます。HTTP ヘッダーでは、レスポンスで JSON を受け入れることを指定します。
誰でもペットをSwaggerに投稿できるので、誰かがモンスターをペットに投稿した場合は、別の番号を試すことをお勧めします。誰かがペットを削除した場合は、次の方法ですぐにペットを復元できます。 https://petstore.swagger.io/#!/pet/addPetサンプル値をクリックして「試してみる」をクリックします。これでID100のデフォルトのペットが追加されます。もちろん、 コールレストアクション (このブログの最後のセクションを参照してください)。
JSON スニペットとスキーマ抽出
JSON形式は、機械が理解できる言語でペットを表現したものです。JSONの応答を次のように簡単に変換できるようにしました。 Mendix オブジェクト、例えば、情報を表示する Mendix 生成されたページ。RESTサービスには、データがどのように返送されるかを示すドキュメントが付属していることがよくあります。Pet Storeのドキュメントには、サンプルのJSONスニペットが付属しています( https://petstore.swagger.io/#!/pet/getPetById レスポンスコンテンツタイプ application/json).
{"id":100,"category":{"id":0,"name":"test"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"}
このスニペットを Mendix 「JSON構造」ドキュメント(クリック フォーマット (NAIST) と Refresh), Mendix 返送されるデータの構造を抽出します。
マッピング
抽出された構造は、 インポートマッピング マッピングは基本的に、受信したJSONデータをどのように変換するかを指定します。 Mendix オブジェクト。マッピングは、 Mendix JSONやXMLを使用できるエンティティに変換するのに非常に強力です。ペットの例は比較的単純ですが、他のサービスでは表現がかなり複雑になることがあります。 Mendix 非常に直感的な方法でデータの複雑さに対処することができます。
- アプリケーションで使用するスキーマの要素を簡単に選択できます。使用したくないデータ構造でドメイン モデルを汚染する必要はありません。
- エンティティをマッピングにドラッグ アンド ドロップすると、自動的に受信データに結合されます。
- 受信データをどのように変換するかをカスタマイズしたい場合は、 Mendix オブジェクトを更新するには、マイクロフローをマッピングに結合します。既存のオブジェクトを更新することもできます。オブジェクトの検索に使用する属性を選択するだけです (key).
- ボタンをクリックすると、JSONのエンティティと関連付けを生成できます。 自動的にマップ手動で作成する必要はありません。もちろん、既存のデータモデルを変更したり活用したりすることは自由です。たとえば、エンティティを作成することができます。 永続的 ドメイン モデルで、オブジェクトをデータベースからページ上のデータ グリッドに直接読み取ることができるようにします。
マッピングを練習することで、マウスを数回クリックするだけで複雑なデータ構造を簡単に処理できることが分かります。
REST呼び出しでマッピングを直接使用する
データ マッピングを REST 呼び出しに簡単に結合できます。ペットの例に従うと、サービスから受信したすべてのペットが PET エンティティにマッピングされます。そのために複雑な式を書く必要はありません。すべてはビジュアル マッパーによって処理されます。

マッピングドキュメントはXML形式もサポートしています。JSONやXML以外の形式でテキストデータを受け取った場合は、結果を文字列変数に保存して、後でマイクロフローで分析することができます。REST呼び出しが画像やPDFファイルなどのバイナリデータで応答する場合は、それを FileDocument or Image オブジェクト。バイナリ表現のサポートは、 Mendix.
ペットをペットショップに送る
マッピングの例では、 GET ペットとエンティティのマッピング。他のHTTPメソッドもサポートされています。たとえば、 POST (NAIST) と PUT: サーバーに送信するメッセージを作成する必要があります(メッセージには送信したいペットの表現が含まれます)。エクスポートマッピングドキュメントは、 Mendix オブジェクトをJSONまたはXMLに変換します。インポートマッピングと同じように見えますが、もちろん矢印は逆になっています。また、プロジェクトで作成したすべてのJSON構造ドキュメントを再利用して、繰り返し作業を回避できます。非常に単純なリクエストの場合は、文字列テンプレートを使用してHTTPメッセージを構築することもできます。このJSONスニペットを POST https://petstore.swagger.io/v2/pet へのリクエスト:
{"id":100,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":available"}
結論
アプリ開発者にとって、他のシステムとの統合は避けられません。RESTサービスとの統合は、 RESTマイクロフローアクションを呼び出すRESTサービスとの間で送受信されるデータを処理するために、 Mendix JSON と XML の両方の表現をサポートします。マッピング ドキュメントはデータ構造を非常に直感的に処理でき、REST 呼び出しに完全に統合されています。
ぜひご自身で試して、統合がいかに強力で楽しいものになるかをご確認ください。





