アダプターのテストおよびデバッグ

improve this page | report issue

概説

IDE (Eclipse、IntelliJ、または類似のもの) を使用して、Java アダプターおよび JavaScript アダプターのテストや、Java アダプターまたは JavaScript アダプターで使用するために実装された Java コードのデバッグを行うことができます。

このチュートリアルでは、MobileFirst CLI または Postman を使用してアダプターをテストする方法、および Eclipse IDE を使用して Java アダプターをデバッグする方法について説明します。

ジャンプ先

アダプターのテスト

アダプターは REST インターフェースを介して使用可能です。 つまり、リソースの URL が分かっていれば、Postman などの HTTP ツールを使用して要求をテストし、適宜 URL パラメーター、path パラメーター、body パラメーター、または headers を渡すことができるということです。

アダプター・リソースへのアクセスに使用する URL の構造は次のとおりです。

  • JavaScript アダプターの場合 - http://hostname-or-ip-address:port-number/mfp/api/adapters/{adapter-name}/{procedure-name}
  • Java アダプターの場合 - http://hostname-or-ip-address:port-number/mfp/api/adapters/{adapter-name}/{path}

パラメーターの受け渡し

  • Java アダプターを使用しているときは、アダプターをどのように構成したかに応じて、パラメーターを URL、本文、フォームなどで渡すことができます。
  • JavaScript アダプターを使用しているときは、パラメーターは params=["param1", "param2"] として渡します。 つまり、JavaScript プロシージャーは、順に並べられた、名前のない値の配列でなければならない params というただ 1 つのパラメーターしか受け取りません。 このパラメーターは、Content-Type: application/x-www-form-urlencoded を使用して、URL (GET) または body (POST) のいずれかに置くことができます。

セキュリティーの取り扱い

Mobile Foundation のセキュリティー・フレームワークでは、アダプター・リソースに明示的にスコープが割り当てられていない場合でも、そのリソース用のアクセス・トークンが必要です。 そのため、セキュリティーを明示的に使用不可にした場合を除き、エンドポイントは常に保護されます。

Java アダプターでセキュリティーを使用不可にするには、OAuthSecurity アノテーションをメソッド/クラスに付加します。

@OAuthSecurity(enabled=false)

JavaScript アダプターでセキュリティーを使用不可にするには、プロシージャーに secured 属性を追加します。

<procedure name="adapter-procedure-name" secured="false"/>

別の方法として、MobileFirst Server の開発バージョンには、セキュリティー・チャレンジをバイパスするためのテスト・トークン・エンドポイントが組み込まれています。

Postman の使用

テスト・トークン

テスト・トークンを受け取るには、下部にある「Postman で実行 (Run in Postman)」ボタンをクリックして、準備完了要求が含まれた Postman アプリケーションにコレクションをインポートするか、次のステップに従って要求を作成します。

Postmanで実行

  1. Content-Type: application/x-www-form-urlencoded を使用して以下のパラメーターを指定して、http://<IP>:<PORT>/mfp/api/az/v1/token への HTTP POST 要求を行うには、HTTP クライアント (Postman) を使用します。

    • grant_type - 値を client_credentials に設定します。
    • scope - 値をリソースの保護スコープに設定します。 リソースに保護スコープが割り当てられていない場合は、このパラメーターを省略して、デフォルトのスコープ (RegisteredClient) を適用します。 詳しくは、スコープを参照してください。

    Postman の本文構成のイメージ

  2. Basic authentication を使用し、機密クライアント ID (「test」) と秘密鍵 (「test」) を指定して、authorization header を追加します。

    機密クライアントについて詳しくは、機密クライアントを参照してください。

    Postman の許可構成のイメージ

結果は、一時的に有効なアクセス・トークンを持つ JSON オブジェクトになります。

{
  "access_token": "eyJhbGciOiJSUzI1NiIsImp3ayI6eyJlIjoiQVFBQiIsIm4iOiJBTTBEZDd4QWR2NkgteWdMN3I4cUNMZEUtM0kya2s0NXpnWnREZF9xczhmdm5ZZmRpcVRTVjRfMnQ2T0dHOENWNUNlNDFQTXBJd21MNDEwWDlJWm52aHhvWWlGY01TYU9lSXFvZS1ySkEwdVp1dzJySGhYWjNXVkNlS2V6UlZjQ09Zc1FOLW1RSzBtZno1XzNvLWV2MFVZd1hrU093QkJsMUVocUl3VkR3T2llZzJKTUdsMEVYc1BaZmtOWkktSFU0b01paS1Uck5MelJXa01tTHZtMDloTDV6b3NVTkExNXZlQ0twaDJXcG1TbTJTNjFuRGhIN2dMRW95bURuVEVqUFk1QW9oMmluSS0zNlJHWVZNVVViTzQ2Q3JOVVl1SW9iT2lYbEx6QklodUlDcGZWZHhUX3g3c3RLWDVDOUJmTVRCNEdrT0hQNWNVdjdOejFkRGhJUHU4Iiwia3R5IjoiUlNBIiwia2lkIjoidGVzdCJ9fQ.eyJpc3MiOiJjb20uaWJtLm1mcCIsInN1YiI6InRlc3QiLCJhdWQiOiJjb20uaWJtLm1mcCIsImV4cCI6MTQ1MjUxNjczODAwNSwic2NvcGUiOiJ4eCJ9.vhjSkv5GShCpcDSu1XCp1FlgSpMHZa-fcJd3iB4JR-xr_3HOK54c36ed_U5s3rvXViao5E4HQUZ7PlEOl23bR0RGT2bMGJHiU7c0lyrMV5YE9FdMxqZ5MKHvRnSOeWlt2Vc2izh0pMMTZd-oL-0w1T8e-F968vycyXeMs4UAbp5Dr2C3DcXCzG_h9jujsNNxgXL5mKJem8EpZPolQ9Rgy2bqt45D06QTW7J9Q9GXKt1XrkZ9bGpL-HgE2ihYeHBygFll80M8O56By5KHwfSvGDJ8BMdasHFfGDRZUtC_yz64mH1lVxz5o0vWqPwEuyfslTNCN-M8c3W9-6fQRjO4bw",
  "token_type": "Bearer",
  "expires_in": 3599,
  "scope": "**"
}



要求の送信

アダプター・エンドポイントに対する以後の要求では、Authorization という名前の HTTP ヘッダーと、前に受け取った値 (Bearer で始まる) を追加します。 セキュリティー・フレームワークは、リソースを保護しているセキュリティー・チャレンジをスキップします。

テスト・トークンとともに Postman を使用したアダプター要求

Swagger の使用

Swagger 文書の UI は、アダプターの REST エンドポイントのビジュアル表示です。
Swagger を使用すると、開発者は、アダプター・エンドポイントがクライアント・アプリケーションに取り込まれる前に、アダプター・エンドポイントをテストすることができます。

Swagger にアクセスするには、次のようにします。

  1. MobileFirst Operations Console を開いて、アダプター・リストからアダプターを選択します。
  2. 「リソース」タブをクリックします。
  3. 「Swagger 文書の表示」ボタンをクリックします。
  4. 「表示/非表示」ボタンをクリックします。

Swagger UI のイメージ

Swagger UI のオン/オフ・スイッチのイメージ

テスト・トークンの追加

要求にテスト・トークンを追加して、リソースを保護しているセキュリティー・チャレンジをセキュリティー・フレームワークがスキップできるようにするには、エンドポイントの操作部の右隅にある「オン/オフ・スイッチ」ボタンをクリックします。

Swagger UI に対して認可するスコープを選択するように求められます (テスト目的の場合、すべて選択することができます)。 初めて Swagger UI を使用する場合は、機密クライアント ID と秘密鍵を指定してログインするように要求されることがあります。 その場合は、「許可されるスコープ」* を指定した新規機密クライアントを作成する必要があります。

機密クライアントの詳細については、機密クライアントチュートリアルを参照してください。



要求の送信

エンドポイントの操作を展開し、必須パラメーター (必要な場合) を入力して「試用」ボタンをクリックします。

テスト・トークンとともに Swagger を使用したアダプター要求

Swagger アノテーション

Java アダプターでのみ使用可能です。

Java アダプター用の Swagger 文書を生成するには、Java 実装環境で Swagger 提供のアノテーションを使用します。

Swagger アノテーションについて詳しくは、Swagger の資料を参照してください。

@ApiOperation(value = "Multiple Parameter Types Example", notes = "Example of passing parameters by using 3 different methods: path parameters, headers, and form parameters. A JSON object containing all the received parameters is returned.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "A JSON object containing all the received parameters returned.") })
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/{path}")
public Map<String, String> enterInfo(
    @ApiParam(value = "The value to be passed as a path parameter", required = true) @PathParam("path") String path,
    @ApiParam(value = "The value to be passed as a header", required = true) @HeaderParam("Header") String header,
    @ApiParam(value = "The value to be passed as a form parameter", required = true) @FormParam("form") String form) {
  Map<String, String> result = new HashMap<String, String>();

  result.put("path", path);
  result.put("header", header);
  result.put("form", form);

  return result;
}

Swagger UI での複数のパラメーター・エンドポイント

アダプターのデバッグ

JavaScript アダプター

MFP.Logger API を使用して、JavaScript アダプターの JavaScript コードをデバッグすることができます。
使用可能なロギング・レベルは、詳細度の低い方から順に、MFP.Logger.errorMFP.Logger.warnMFP.Logger.infoMFP.Logger.debug です。

その後、ログがアプリケーション・サーバーのログ・ファイルに出力されます。
必ず、サーバー詳細度レベルを適切に設定してください。そうしないと、ログ・ファイル内のログが表示されません。

Java アダプター

アダプターの Java コードをデバッグするには、その前に、Eclipse を以下のように構成する必要があります。

  1. Maven の組み込み - Eclipse Kepler (v4.3) からは、Maven サポートが Eclipse に組み込まれています。
    ご使用の Eclipse インスタンスで Maven がサポートされていない場合は、m2e の説明に従って Maven サポートを追加してください。

  2. Maven が Eclipse で使用可能になったら、次のようにしてアダプター Maven プロジェクトをインポートします。

    アダプター Maven プロジェクトを Eclipse にインポートする方法を示すイメージ

  3. 次のようにして、デバッグ・パラメーターを指定します。
    • 「実行」「デバッグ構成」をクリックします。
    • 「リモート Java アプリケーション」をダブルクリックします。
    • この構成の名前を入力します。
    • ホストの値を設定します。ローカル・サーバーを実行している場合は「localhost」を使用します。そうでない場合は、リモート・サーバー・ホスト名を入力します。
    • ポートの値を「10777」に設定します。
    • 「参照」をクリックして、Maven プロジェクトを選択します。
    • 「デバッグ」をクリックします。

    MobileFirst Server デバッグ・パラメーターを設定する方法を示すイメージ

  4. 「ウィンドウ」→「ビューの表示」→「デバッグ」をクリックして、デバッグ・モード を入力します。 これで、標準 Java アプリケーションの場合と同様に、Java コードを正常にデバッグすることができます。 アダプターのコードを実行して設定されたブレークポイントがヒットするようにするには、アダプターに対して要求を発行する必要があります。 アダプターのテスト・セクションに記載されたアダプター・リソースの呼び出し方法の説明に従うことで、これを実行できます。

    デバッグ中のアダプターを示すイメージ

IntelliJ を使用した Java アダプターのデバッグ方法の手順については、ブログ投稿の IntelliJ を使用した MobileFirst Java アダプターの開発を参照してください。

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on June 17, 2020