OData が特別な理由は何ですか?
OData は REST API の一種ですが、REST API にはない特定の機能が標準化されています。まず、OData はリクエスト自体のクエリとフィルタリングをサポートしています。また、OData は実装後にアプリのデータの変更に関する機能的な監査証跡を作成します。OData を一言でまとめると、OData は REST API を構築するためのベスト プラクティスであり、REST の機能をより有効に活用できます。
以下は、OData.org の公式 Web ページからの抜粋です。ここでは、OData が何であるかを OData 自身の言葉で説明しています。
「OData(オープンデータプロトコル)は ISO/IEC承認, OASIS標準 RESTful API の構築と使用に関する一連のベスト プラクティスを定義する OData は、リクエスト ヘッダーとレスポンス ヘッダー、ステータス コード、HTTP メソッド、URL 規則、メディア タイプ、ペイロード形式、クエリ オプションなどを定義するさまざまなアプローチを気にすることなく、RESTful API を構築しながらビジネス ロジックに集中するのに役立ちます。OData は、変更の追跡、再利用可能なプロシージャの関数/アクションの定義、非同期/バッチ リクエストの送信に関するガイダンスも提供します。" — オーデータ
OData データセットは、Microsoft Excel や Power BI などの他のツールでも使用できます。 Mendix サポート OData バージョン 3Atom XML形式でデータを返します。 OData バージョン 4クライアントが要求した形式に応じて、JSON と XML の両方の形式でデータを返します。
ODataをどのように使用するか Mendix?
In Mendix Studio Pro では、OData API を作成するのは比較的簡単です。通常の REST サービスと同様に、Studio Pro ではドメイン モデルから直接 API を生成するオプションも提供されます。
ODataサービスを作成したら、アプリをクラウド環境にデプロイするだけで、Datahubに公開できます。Datahubはオープンメタデータカタログであり、基本的には、 Mendix Datahub に OData サービスを登録すると、アプリが起動します。また、API 自体の検出と理解にも役立ちます。
ただし、ODataを使用するためにDatahubを使用する必要はありません。 Mendixただし、API 自体の $metadata 契約をダウンロードすることで、手動で実行することもできます。
しかし、一度Datahubに登録されると、別の Mendix アプリは、リモート エンティティ (Datahub に登録された OData サービス) をドメイン モデルにドラッグ アンド ドロップするだけです。
また、この記事を書いている時点では、 Mendix Studio Pro 9.17.0がリリースされました。ODataの使用に関するいくつかの驚くべき新しい改善が含まれています。 Mendix以下は 9.17.0 リリースノートからの抜粋:
Studio ProではOData機能が拡張され、 OData でサービス、API、データベースをラップする そして、 コネクタを構築する 外部データにアクセスするODataサービスを簡単に検出して使用できるようになります。 データハブカタログ新しい機能には、[非永続エンティティをODataリソースとして公開する]機能が含まれます。https://docs.mendix.com/refguide/wrap-services-odata/#npe-published-odata)、そして マイクロフローを使用して、リソースの取得方法と保存方法を定義します。. また、 オープンAPI 簡単に契約する 公開された OData リソースをテストする.
APIドキュメントへのアクセス
ODataの非常に強力な機能は Mendix アプリがデプロイされたりローカルで実行されたりしたら、公開されたODataサービスのAPIドキュメントにアクセスできます。 アプリのベースURL + '/odata-doc/'.
たとえば、ポート 8080 で実行されているローカル アプリ上のドキュメントの場所は次のようになります。
https://localhost:8080/odata-doc/
OData の場合、OData $metadata 契約と OpenAPI 契約の両方がここで利用できます。OpenAPI ページを使用して、API への OData 呼び出しをテストすることもできます。
ODataの実践
次のセクションでは、OData APIをあなたのプラットフォームで公開する方法について実践的なガイドを紹介します。 Mendix アプリは、そのサービスをデータハブに登録し、別のリモートエンティティとしてデータを消費します。 Mendix アプリケーション。
シナリオ:
Eコマースを作ったと想像してください Mendix アプリ。アプリには、注文を含むエンティティがあり、倉庫の従業員に渡されて注文を完了し、顧客に出荷します。従業員が倉庫に商品を補充するとき、各商品が保管されている場所を Excel シートにカタログ化します。現在、倉庫は Excel シートから注文を印刷し、独自の Excel ドキュメントでアイテムが保管されている場所を検索していますが、これは非効率的で、プロセス全体の速度が低下します。
既存のアプリには機密性の高い顧客情報が含まれているため、これを外部の倉庫スタッフに公開したくありません。作業員が注文とそれを完了するために必要なアイテムを表示できる別のアプリを作成し、ODataを使用して情報を共有することにしました。 Mendix データハブ。
ドメインモデルから OData API を生成する
私たちの電子商取引アプリでは、ドメイン モデルに 1 対多の関連付けを持つ $Order と $Orderline というエンティティがあります。

エンティティ(この場合は$Orders)を右クリックすると、「ODataリソースとして公開」オプションが表示されます。

これをクリックすると、プロジェクト内のどこに新しい API を作成するか、リソースにどのような名前を付けるかを尋ねられます。

次に、生成されたリソースの表示とプロパティの編集に自動的に移動します。倉庫の従業員には注文情報の表示のみを許可し、注文の詳細の編集は許可しないため、これらはそのままにしておきます。
これらの機能を利用してはいませんが、Datahubは読み取り専用ではなくなったことを指摘しておくべきだと思います。 データの読み取りに加えて、新しいレコードの挿入、更新、削除もできるようになりました。

次に、$Orderlineエンティティをリソースに追加します。これを行うには、エンティティの下の[追加]ボタンをクリックし、$orderlineを参照して[OK]をクリックします。

Sをやったらtudio Proはこれらのエンティティが関連していることを認識し、それらの間の関連性を公開するかどうかを尋ねます。、[はい]をクリックします。

実行すると、コンソールに次のようなエラーが表示されます。

$Itemname と $OrderNumber は API のキーとして使用されるため、空にできないようにする必要があります。

そして、$ItemNameに一意性検証ルールを追加する必要があります。これはドメインモデルで行うことができます。

OData リソースを Datahub に公開する
この部分は本当に簡単です。アプリをクラウド環境にデプロイするだけです。無料のクラウドから他のホスティングソリューションまで、誰でも使えます。 Mendix 用意されています。
デプロイするすべてのOData API Mendix クラウドは自動的に登録されるため、API も自動的に更新されます。これにより、ドキュメントが常に最新の状態になり、接続先の環境に常に関連したものになります。カタログには、API でセマンティック バージョニングを使用する機能が提供されているため、テスト、受け入れ、本番のどのバージョンが実行されているかが表示されます。
アプリを Mendix クラウドでは、カタログ API を使用して、デプロイを独自の CICD プロセスに自動的に登録できます。または、データ ハブ カタログで手動で登録することもできます。
この例では、 Mendix 無料のクラウド。アプリがデプロイされると、次のメールが届きます。 Mendix Datahub は、新しい OData リソースがカタログに自動的に登録されたことを通知します。

Datahub から外部エンティティを使用する
新しいアプリ(倉庫作業員用)には、製品というテーブルがあります。

このモジュールには、Datahub に公開した $Order および $Orderline エンティティを含めます。
ドメイン モデルで、右側の Datahub ペインに移動し、登録したサービスの名前を検索します (無料クラウドにデプロイした場合は、フィルターで開発環境を有効にする必要があります)。

サービスを見つけたら、両方のエンティティを新しいアプリのドメイン モデルにドラッグするだけで、残りの作業は Studio Pro が処理します。

これで、アプリ内で $order と $orderline のデータを自由に使用できるようになりました。よくできました!
考慮すべき点
アプリ内の情報に誰がアクセスできるかを覚えておくことが重要です。どのアプリケーションでもリモート エンティティを使用する場合は、必ずアプリのセキュリティを確認してください。