例: REST-スタイル Web サービスの呼び出し

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  Web サービスの呼び出し >

例: REST-スタイル Web サービスの呼び出し

この例は、 MapForce から、ジェネリックな HTTP Web サービスを呼び出す方法について説明しています。この例で呼び出される Web サービス は以下で見つけることができます: https://app.swaggerhub.com/apis/FAA/ASWS/1.1.0 。この Web サービスは、(例えば、 "SFO"、"IAD"、 "ABE"、 "DFW" などの)3つの英数文字からなる 空港名コードを引数として受け入れ、米国の主要な空港の現状を XML または JSON 構造として返します。この例は、次のパスで見つけることのできるマッピングデザインファイルが伴われます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\AirportStatus.mfd

 

この例では、Web サービスのレスポンスは、 JSON フォーマットで、JSON ファイルにマップされます。ですから、 Web サービスのレスポンス構造の JSON スキーマが必要になります。JSON スキーマは Web サービスプロバイダーにより提供されたサンプルレスポンスより XMLSpy を使用して生成されています。このスキーマをマイドキュメント フォルダーに相対的な次のパスで見るけることができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\AirportStatus.schema.json

 

リクエストパートに関しては、リクエストに応じて "SFO" の値を提供する Web サービスを呼び出します。レスポンスパートに関しては、レスポンスデータを JSON ファイルにマップします。ですから、マッピングは、次の3つの主要なコンポーネントから構成されます: Web サービス呼び出し、入力パラメーター、 JSON 出力ファイル。

 

ステップ 1: Web サービスコンポーネントを追加する

1.マッピングの変換言語が BUILT-IN に設定されていることを確認してください( 変換言語の選択 を参照する)。
2.「挿入」 メニューから、Web サービス関数」をクリックします。
3.「サービスの定義」 から「手動」をクリックします。
4.リクエストメソッドを GET に設定し、 URL を http://services.faa.gov/airport/status/{airportCode} に設定します。 中かっこ内の値は、ランタイム時に実際の空港名コードを置き換えられるテンプレートパラメーターです ( Web サービス呼び出しの追加 (REST-スタイル) を参照)。
5.「パラメーターの追加」 ( ic_paramadd ) ボタンをクリックして、新規のパラメーターを 「パラメーター」 テーブルに追加します。パラメーターの名前は、 URL 内の中かっこ内で指定されているパラメーターと同じである必要があることに注意してください。 スタイルを"テンプレート"に設定し、 "文字列" を選択し、 "マップ可能" と  "必須" オプションをチェックします。"説明" フィールドは任意です。
6.Web サーバーにクライアント (つまり、 MapForce) がレスポンスに JSON を期待することを伝えるために、ヘッダーを追加します。これを行うには、「パラメーターの追加」 ( ic_paramadd ) ボタンを再度クリックし、パラメーターを "Accept" と名づけ、スタイルを 「ヘッダー」 とし、 application/json を固定値として入力します。

mf_airportstatus_01

7.「レスポンス」から 「編集」 ボタンをクリックして、 Web サービスレスポンスのためのスキーマを参照します。Web サービスレスポンスのためのスキーマを参照します。スキーマは以下のパスで検索することができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\AirportStatus.schema.json.

mf_airportstatus_02

8.「OK」をクリックします。Web サービスをマッピングエリアで使用することができます。

mf_airportstatus_03

 

ステップ 2: 入力パラメーターの追加

1.「挿入」 メニューから 「入力の挿入」をクリックします。
2."airportCode" をパラメーター名として入力し、「入力が必要です」オプションをクリックして、チェックを解除します (上に示されるように、入力は定数から与えられます)。

mf_airportstatus_04

3.(メニューコマンド 「挿入 | 定数」を使用して) "SFO" の値を持つ定数を追加し、パラメーター入力と接続します。
4.aiportCode パラメーターの出力を上に表示されるようにリクエストの入力に接続します。

mf_airportstatus_05

この段階では、 Web サービスのリクエストパートは、完成しています。マッピングランタイムにおいて、Web サービスは定数により与えられた値(この場合、 "SFO")により呼び出されます。

 

ステップ 3: JSON 出力を追加する

 

1.「挿入」 メニューから「JSON スキーマ/ファイル」をクリックします。
2.<マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\AirportStatus.schema.json を参照して、 「開く」をクリックします。
3.サンプル JSON ファイルを与えるようにプロンプトされると、 「スキップ」をクリックします (サンプル JSON ファイルは生成されるため、必要ありません )。
4.「接続」 メニューで、「一致する子を自動的に接続」 メニューアイテムが選択されていることを確認してください。このオプションを有効化することにより、次のステップで時間を節約することができます。
5.Web サービスのレスポンス本文の object ノードを、JSON コンポーネントの object ノードに下に示されるように接続します。 「一致する子を自動的に接続」 が前のステップで有効化されているため、全ての子孫ノードが自動的に接続されるため、各接続を描く必要がありません。

mf_airportstatus_06

 

ステップ 4: マッピングの実行

Web サービスを呼び出す準備が整うと、 「出力」 ボタンをクリックして、マッピングを実行し、 一般的な出力をプレビューします。Web サービス 呼び出しに成功すると、「出力」 タブは、返された JSON 構造を表示します。呼び出しに失敗すると、 MapForce は、エラーを状況に応じて返します。Web サービスの説明にも記述されている通り、 エラー 502 (ゲートウェイが不適切です) がサーバーが存在しない場合、 Web サービスにより返される可能性があります。Web サービスによりサポートされていないカスタム空港名コードを使用した場合、 HTTP "見つかりません" (404) エラーが発生する可能性があります。

 

MapForce Server が存在する場合、 (http://www.altova.com/ja/mapforce/mapforce-server.html) マッピングをマッピング実行可能ファイル (*.mfx) にコンパイルし、 コマンドライン、または、 MapForce Server が実行されるサーバーマシン上の MapForce Server API  から実行することができます。( マッピングを MapForce Server 実行可能ファイルへコンパイルする を参照)。

 

GET メソッドを使用してリアルタイムに飛行場の状態を取得するジェネリックな HTTP Web サービスの呼び出しの作成が完了しました。Web サービスとの作業に関する一般的な情報に関しては、次を参照してください


(C) 2019 Altova GmbH