
ラボ 1: Exchange上で Order Fulfillment API を確認並びに再利用
概要
このラボでは、Anypoint Exchange Design Centerに保存されているOrder Fulfillment API RAML定義から、Anypoint Studioで新しいMuleアプリケーションを作成します。このラボはREST APIの実装になります。
ステップ 1: 新しい Mule プロジェクトを作成し、RAML 定義をインポート
API 定義を使用して、Order Fulfillment API の実装を作成します。 これを行うには、Design Center から RAML 仕様をインポートする必要があります。
-
Anypoint Studioを開いていない場合は、デスクトップ・アイコンから Anypoint Studio を起動し、作業しているワークスペースを選択します(例:C:\workspaces\myworkspace)。
-
Anypoint Studioのメニューから、[File] > [New] > [Mule Project]を選択して、新規Muleプロジェクトを作成します。新しいアプリケーションの詳細を定義するウィンドウがポップアップします。
-
プロジェクトに api-order-fulfillment という名前を付けます。
-
Mule Server 4.4.0 EE (もしくは最新のバージョン) を選択します。
-
API Implementation の下にある Import a published API 内の, Plus ボタンをクリックして、 from Exchange を選択します。
-
クリックすると、Add Dependencies to the Project ウィンドウが表示されます。ログインを求められる場合は、Anypoint Platformアカウントを使用します。
-
これは、前回のモジュールで行ったのと同じです。Type a search term to look up in Exchange という凡例が書かれた検索ボックスが表示されるので、Order Fulfillment API と入力し、Enter を押してExchange内で検索を行います。
-
リストから Order Fulfillment API を選択し、Add ボタンをクリックします。
-
最後に Finish ボタンをクリックします。
-
Exchangeからインポートされた新しいAPIがリストに表示されます。
Scaffold flows from these API specifications にチェックが入っていることを確認してください。デフォルトで選択されています。
-
Finish を押します。これにより、APIを実装するスケルトン・プロジェクトが作成されます。
-
インポートにより、以下のようにAPIメタデータに基づいて事前に設定された実装を持つ新しいAnypoint Studioアプリケーションが作成されます。
自動生成されたものを確認してみましょう。
ダイアグラムの一番上には、order_fulfillment-api-main というフローと、プロセス API のプレースホルダフロー post:/order_fulfillment:application/json:order-fulfillment-api-config が表示されています。このプロセスAPIは、ExchangeのRAMLで定義されているPOSTメソッドを反映したものです。(API-product-console フローや global exception handlingブロックもあります)。
通常、get:/resource、post:/resource、put:/resource などのようなフローがあります。フローの名前は、APIkit ルーターがリクエストを適切なフローにルーティングできるようにするために非常に重要です。
APIkit が RAML のメソッドのレスポンスでサンプル データを検出すると、Set Payload Transformer がフローに挿入され、サンプル データ参照で指定された静的レスポンスが返されます。
自動生成された Set Payload Transformer により返される静的応答を使用すると、生成後すぐにスタブをテストできます。これらのフローは、より高度なモックサービスを提供したり、完全なAPI実装に拡張することができます。
|
api-product-main
これがメインのフローです。HTTP サービスを公開し、APIKit ルーターを使ってリクエストを処理します。
HTTP リクエストはMuleメッセージに変換され、APIKit ルーターによってリクエストされたフローにリダイレクトされます。
HTTP の設定を見てみると、 http://localhost:8081/api のリクエストをリッスンしていることがわかります。
|
post:/order_fulfillment:application/json:order-fulfillment-api-config
次のステップで実装するスケルトンフローです。このスケルトンフロー、またはスタブを素早くレイアウトすることで、開発者も利用者も、このフローをMuleアプリケーションとして実行しているかどうかを素早くテストすることができます。 自動生成された静的なレスポンスが返されるので、生成後すぐにスタブをテストできます。これらのフローは、より高度なモックサービスを提供したり、完全なAPI実装に拡張することができます。 APIアセットの拡張は、多くのMuleSoftの顧客が採用している典型的なアジャイル開発プラクティスの副産物です。
ステップ2: APIの実行
-
APIをテストするために、まずはStudio内で実行してみましょう。Package Explorer ビューで api-order-fulfillment を右クリックします。
-
Run As > Mule Application を選択します (前回のラボで実行している場合は省略しても構いません)。
-
アプリケーションが実行を開始し、コンソールにMule Runtimeログが表示されます。アプリケーションのデプロイが完了したことがコンソールに表示されるまで待ちます。
-
アプリケーションがデプロイされると、Anypoint StudioがAPIコンソールへのリンクを持つタブを開き、アプリケーションをテストすることができます(コンソールを最大化するには、APIKitコンソールタブをダブルクリックします)。
-
クリックすると、カスタムブラウザ上に新しいページが開きます。
-
左側の POST タブをクリックして、order_fulfillment メソッドをテストします。
Accept ヘッダーに application/json が入力されていることを確認してください。
-
Body タブに移動して、リクエストボディを確認します。
-
SEND ボタンをクリックします。
-
customer creationからのレスポンスのサンプルが表示されているはずです。
-
コンソールタブに移動し、赤いボタンを押してMuleランタイムサーバーを停止します。
次のラボでは、データベースに接続するためにフローを更新します。