
ラボ 1: StudioでOmni Channel APIを実装
概要
この最初のラボでは、Anypoint Studioを使用してMuleアプリケーションを作成し、各リソースの各メソッド(GETなど)ごとに1つのフローを作成します。 またAPIKitを(Muleアプリケーションの一部として)使用して各RESTリクエストを処理し、それらのメッセージを変換して各フローで処理します。
実装はいくつかのステップで構成されます。
-
Omni Channel APIのRAMLファイルから、Anypoint Studioで新規のMuleプロジェクトを作成
-
Anypoint StudioでMuleアプリケーションを実行
後ほどAPIコンソールを使用してこの新しいAPIをテストします。
ステップ 1: RAMLから新規Muleプロジェクトを作成
このステップでは、Omni Channel APIのRAML定義から、Anypoint Studioで新しいMuleアプリケーションを作成します。 これがREST APIの実装になります。
-
デスクトップのアイコンから、Anypoint Studioを起動して下さい。
-
Anypoint Studioを初めて開くと、プロジェクトを保存するワークスペースの選択を求められますので、デフォルトで用意されているものを選択してください。
-
Anypoint Studio のウェルカム画面が表示されます。
-
Studioの詳細を知りたい場合は、一番下までスクロールして、 Continue to Studio を押してください。
-
ワークスペース・ランチャーで、デフォルトのワークスペース・ディレクトリの場所を使用します。
-
Anypoint Studioのメニューから、File > New > Mule Projec(ファイル>新規> Muleプロジェクト)を選択して、新しいMuleプロジェクトを作成します。 New Mule Project ウィンドウが表示され、新しいアプリケーションの詳細を定義します。
-
プロジェクト名に omni-channel-api-v1 と入力します。
-
ランタイム・バージョンは Mule Server 4.4.0 EE (もしくは最新バージョン)を選択して下さい。
-
ここでは、Import a Published API で、ExchangeからRAML Specをインポートします。
をクリックして、from Exchange を選択します。
-
クリックすると、新しいウィンドウが表示されますので、Anypoint Platformにログインする必要があります。Add Account ボタンをクリックしてください。
-
新しいログインウィンドウが表示されますので、認証情報を入力してください。
-
検索欄に
Omni Channel
と入力してください。 -
モジュール1で作成した <username> Omni Channel Experience API を選択し、Add をクリックします。
モジュール1を実施していない場合は、既に用意されている Omni Channel Experience API をインポートすることができます。 その場合は Publisher が Mulesoft のものとなります。
-
Finish をクリックしてください。
-
Scaffold flows from these API Specifications にチェックが入っていることを確認し、すべてに問題がないことを確認します。
-
最後に Finish をクリックすると、APIを実装するためのスケルトン・プロジェクトが作成されます。
これでプロジェクト作成は完了です! 自動作成されたフローを確認してみましょう。
-
ダイアグラムの一番上に、 api-main および api-console というフローがあり、RAMLに定義されたメソッド毎のフローがその後に続いています。
下にあるフローは、RAMLファイルで定義されたAPI設計に応じて自動生成されたものです。一般的に、 get:\resource、 post:\resource、 put:\resource のようにリソースおよびメソッドごとのフローが生成されています。 フローの名前は、APIKitルーターによるリクエストをフローにルーティングするためにとても重要です。 ここでは変更しないでください。
APIkitが、RAMLに定義されたメソッドのレスポンスにExampleデータを検出した場合、 フローに Dataweave Transform Message が挿入され、Exampleデータの参照による静的なレスポンスを返すよう設定されます。
自動生成された Dataweave Transform Message から返される静的なレスポンスによって、すぐにスタブとしてAPIをテストすることができます。当然ながら、これらのフローを拡張して、より高度なモックサービスを提供するだけでなく、次のラボで見るように、完全なAPI実装へと進化させることができます。
api-main
これはメイン・フローです。HTTPサービスを公開し、 APIKit ルーターを使用してリクエストを処理します。
HTTPリクエストはMuleメッセージに変換され、APIKitルーターによってリクエストされたフローにリダイレクトされます。
HTTPリスナーを選択すると、HTTP構成を確認できます。プロトコル、ホスト、ポート番号の設定があり、 http://localhost:8081/api でリクエストを待機していることがわかります。
メイン・フローの中には、 エラー・ハンドリング のブロックも含まれています。ここには、複数の On Error Propagate の定義が自動生成され、 METHOD_NOT_ALLOWED、 BAD_REQUEST といった一般的なエラーをハンドリングできるようになっています。put:\users\user{user_id}\shopping_cart
このフローは、ユーザーIDに基づいてアイテムをユーザーのショッピング・カートにPUTします。 この PUT 操作はレスポンスを返さないため、 Dataweave Transform Message プロセッサは自動的に Logger に置き換えられています。get:\orders\order\{order_id}
このフローは、オーダーIDに基づいてオーダー情報を取得します。get:\products\product\{product_id}
このフローは、製品IDに基づいて製品情報を取得します。get:\orders\search
このフローは、検索条件に基づいてオーダーのリストを返します。get:\products\search
このフローは、検索条件に基づいて製品のリストを返します。get:\users\user\{user_id}\shopping_cart
このフローは、ユーザーIDに基づいてユーザーのショッピング・カートの全てのアイテムを返します。post:\users\user\{user_id}\shopping_cart\confirmation
このフローは、ユーザーのショッピング・カートにあるアイテムの購入を確認します。
ステップ 2: 生成されたAPIプロジェクトのテスト
-
APIをテストするために、まず最初にAPIをStudioで実行します。アプリケーションを右クリックして下さい。
-
Run As > Mule Application を選択します。
-
アプリケーションが開始され、コンソールにMuleランタイムのログが表示されます。
Anypoint Studioは、このアプリケーションを組み込みのMuleランタイムにデプロイしました。 別のMuleサーバー環境にデプロイする必要はありません。 開発者は、共有の開発環境やQA環境に展開する準備ができるまで、アプリケーションをローカルで開発およびテストできます。 . API Consolesを使用してアプリケーションをテストすることができます。APIKit Consoles タブにある Open console ボタンをクリックして下さい。
-
ブラウザのウィンドウが開き、 http://localhost:8081/console/ を表示します。
-
左側にある /products/search リソースをクリックして開き、 GET を選択して下さい。
-
右下にある SEND ボタンをクリックして、リクエストを送信します。
-
Show optional parameters をチェックし、以下のように入力してから SEND をクリックして下さい。
3番目のパネルを下にスクロールすると、インポートしたRAMLで定義されたモックアップデータが表示されます。
Muleランタイムサーバにデプロイされたライブアプリケーションですが、RAMLの情報を利用して「モッキング」エクスペリエンスを提供しています。
次のラボの準備のために、アプリケーションを停止しましょう。
-
コンソールタブの、赤い四角いボタンを押して、Muleランタイムサーバーを停止します。
まとめ
このラボでは、以下を実施しました。
-
API定義をAnypoint Studioに直接ダウンロードし、依存関係として追加
-
RAML仕様を使って、APIの初期実装スケルトンを生成
-
自動生成されたスケルトン・プロジェクトからAPIを実装
このラボでは、開発者がAPIkitによって設計したREST API(RAMLおよびサポート要素)をすばやくインポートし、生成されたMuleSoftフローでAPIロジックを迅速に実装できるようにする方法を示します。 APIkitは、MuleSoftフローに合わせたインタラクティブなコンソールもデプロイします。 このラボでは、開発者がRAMLのAPI仕様からオンプレミスのインタラクティブなAPIをデプロイまでをカバーしています。
API実装は実際のMuleSoftアプリケーションであり、エンドツーエンドでAPIをテストできるようになります。インテグレーションのアプリケーション構築とAPI化には追加の知識は不要で、MuleSoft開発者がこの両方で作業することを容易にします。
-
APIkit についての詳細はドキュメントを確認してください。
-
ExchangeからAPI仕様インポート についての詳細は、ドキュメント確認してください。
-
Anypoint Exchange についての詳細は、ドキュメント確認してください。
-
Error-Handling についての詳細は、ドキュメント確認してください。
おめでとうございます! ラボ 1が完了しました。
ラボ 2に進んでください。