※この記事は、下記MuleSoftの記事を、許可を得て翻訳したものです。
https://developer.mulesoft.com/guides/quick-start/developing-your-first-mule-application
はじめに
パート1ではAPIを設計しExchangeに公開しました。パート2ではこのAPI仕様をAnypoint Studioにインポートして簡単なAPIアプリーケーションを構築します。このチュートリアルでは、APIkitでREST APIをスキャフォールドして作成したAPIアプリケーションをMySQLデータベースに接続する方法を学習します。次にDataWeaveを使用してデータ変換を設定し、MySQLデータベースからのデータを変換してAPIエンドポイントに到達したときにJSONオブジェクトで返すように変更します。最初のフローアプリケーションを構築するにはMuleSoftのAnypoint Studioを使用します。開発者はさまざまなコネクタをキャンバスにドラッグ&ドロップするだけでフローを作成できます。
ステップ1:Anypointプラットフォームにサインアップし、Anypoint Studioをダウンロードする
Anypoint Platformのトライアル版のアカウントをもっていない場合は、下記にリンクからアカウントを作成してください。
ローカル環境にAnypoint Studioの環境がない場合は、以下のリンクからダウンロードしてください。
ステップ2:APIをAnypoint Studioにインポートする
API仕様をインポートする前に、今回のフローで実装する内容を説明しましょう。
- MySQLデータベースにFirstName、LastName、Email、Companyの4つ項目を持つcustomersテーブルがあり、100件のレコードが登録されている。
- HTTP GETリクエストがAPIに対して行われると、APIはそのレスポンスのBodyにデータベースから取得したcustomersテーブルのすべてのレコードをセットして返却します。
- 課題:HTTPリクエストでJSON形式でデータを表示する必要があります。
この内容のフローを数分で構築しましょう。
Anypoint Studioでフローの作成を行う場合、まず、Anypoint PlatformアカウントをAnypoint Studioと同期する必要があります。Anypoint Studioのメニュー > Windows > Preferences > Anypoint Studio > Authenticationに移動して、そこにアカウント名が表示されている場合は、この手順をスキップしてください。アカウント名が表示されない場合は、「add」ボタンをクリックしてAnypoint Platformアカウントにログインします。
次に、File-> New-> Mule Projectに移動します。
プロジェクトにContactAPIという名前を付け、[Add a dependency]セクションで緑色のプラス記号をクリックします。 Exchangeから選択し、最後のチュートリアルで作成してExchangeに公開したContact APIを選択します。
「Finish」を選択してプロジェクトを作成します。ExchangeからAnypoint StudioにAPI仕様をインポートすると、APIkitは、Design Centerで作成したAPI仕様に基づいて、APIアプリケーションをスキャフォールドします。ご覧のとおり、APIkitはプロジェクトを3つのフロー(contact-api-main、contact-api-console、およびget:\contacts:contact-API-config)に分割しています。さらに、APIkitは自動的にエラーハンドラーを生成します。エラーハンドラーは、「/contacts」エンドポイントに無効なHTTPリクエストを送信した場合、APIコンシューマーにメッセージを返します。
次に「get:\contacts:contact-api-config」フローまでスクロールします。このフローは、HTTP GETリクエストが「/contacts」エンドポイントに送信されたときに実行されます。このAPIアプリケーションを構築するための最初のステップは外部ソースからデータをフェッチする必要があることです。Anypoint Studioウィンドウの右側に、Mule Palletが表示されます。検索バーで「Database」を検索し、選択コネクターをフロー「get:\contacts:contact-api-config」にドラッグします。
「Database connector」をクリックし、緑色のプラス記号をクリックしてコネクタ構成を設定します。上部の「Connection」ドロップダウンフィールドでMySQL接続を選択します。次に「Config」ボタンをクリックし「Add recommended libraries」を選択して、ドライバーをコネクターに自動的に割り当てます。
JDBCドライバーを追加したら、次のデータベースの接続情報を追加します。
- Host:congo.c3w6upfzlwwe.us-west-1.rds.amazonaws.com
- Port:3306
- User:mulesoft
- Password:mulesoft
- Database:congo
「Test Connection」ボタンをクリックして、コネクターがデータベースに正常に接続できることを確認します。次に「Query」フィールドに次のMySQLクエリテキストを追加します。
- SELECT * FROM contacts;
Databaseコネクタをフローに正常に追加したので、データをフォーマットしてAPIのコンシューマに提供する方法を指定する「Transform Message」コネクタを追加する必要があります。「Transform Message」コネクタを追加するには、Mule Palletに移動し、「get:\contacts:contact-api-config」フローの次のコンポーネントとして「Transform Message」コネクタを追加します。
「Transform Message」コネクタをクリックすると、次のDataWeaveコードを含む出力フィールドが表示されます。
%dw 2.0 output application/java --- { }
上記のコードはそのままにしておくと、空のJavaオブジェクトを出力します。ただしContact APIの場合、「Transform Message」がデータベース内の各エントリを配列内の個別のオブジェクトとして出力するようにします。幸いこの変換はDataWeaveを使用して簡単に行うことができます。DataWeaveはMuleアプリケーションを通過するデータを変換するためのMuleSoft固有の式言語です。詳細についてはこちらをクリックしてDataWeaveのチュートリアルをご覧ください。
%dw 2.0 output application/json --- payload map(item, index) ->{ FirstName: item.FirstName, LastName: item.LastName, Email: item.Email, Company: item.Company }
このDataWeaveコードは、各データベースエントリを配列内の個別のオブジェクトとしてリストするカスタム出力を作成します。以下のスクリーンショットに示すように、オートマッパーは各データを接続し、各値をドラッグアンドドロップするだけでシステム間でデータを変換できます。
プロジェクトを保存してからキャンバスを右クリックし、「Run project contactapi」を選択します。Window -> Show View -> Consoleに移動すると、コマンドラインが表示されビルドプロセス中にエラーが発生したかどうかを確認できます。ビルドエラーが発生せずにMuleアプリケーションが起動すればこのステップは完了です。Muleアプリケーションをテストする最後のステップに進みましょう。
ステップ3:localhostでAPIをテストする
これでプロジェクトが実行されたので、Postmanを開いてAPIアプリケーションが期待どおりに機能しているかどうかを確認します。 GETリクエストをhttp://0.0.0.0:8081/api/contactsに送信します。
ステータス:200でBody部に100件のレコードすべてが含まれるレスポンスが返却されればテストは成功です。このリクエストの処理には最大30秒かかる場合があることに注意してください。正しい結果が得られない場合は、チュートリアルをもう一度読んで手順を飛ばしたりしていないかをもう一度確認してみてください。
おめでとうございます!それでは、APIを公開して管理しましょう
Anypoint Studioを使用して最初のmuleアプリケーションを作成できました。次のチュートリアルでは、CloudHubへのMuleアプリケーションを公開する方法と、APIにポリシーとレート制限を設定するようにAPI Managerをセットアップする方法を学びます。次のチュートリアルを続けるには、ここをクリックして、CloudHubとAPI ManagerでAPIをデプロイして管理する方法を学習してください。