4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM API Connect as a Service on AWS のサンプルAPIチュートリアルの概要

Last updated at Posted at 2023-05-08

はじめに

IBM API Connect Enterrpise as a Service のドキュメントで、API ConnectのサンプルAPIチュートリアルが提供されています。
Sample API and tutorial

API定義(yamlファイル)はGitHubから入手可能で、API Connectへのインポート、テスト呼び出し手順が解説されています。
https://github.com/ibm-apiconnect/sample-orders-api
手順については、YouTube動画でも紹介されています。
Getting started with API Connect using the order tracking sample API

外部ネットワークにつながる環境であれば、オンプレや他のクラウドのAPI Connect v10の環境にもインポートして実行できます。

この記事では、このサンプルAPIチュートリアルについて、簡単にご紹介します。

なお、IBM API Connect as a Service on AWSの試用方法については、以下の記事を参照してください。
IBM API Connect as a Service on AWS 試用版を使ってみる

サンプルAPIの概要

このAPI定義のアセンブリでは、二つのバックエンドシステム(AWS LambdaのREST API)を呼び出し、そのレスポンスをマージしてリクエスト先に戻しています。
API定義でのアセンブリの主な処理は

  • ダミーの受注システムのAPIを呼んで、商品受注情報を取得
  • ダミーの配送システムのAPIを呼んで、商品配送状況を取得
  • これらのレスポンスをマージ
    です。

チュートリアルの実施手順の詳細は、上記のGitHubやYouTubeで紹介されています。以下はチュートリアルの流れです。

Step 1: サンプル定義を参照します。
Step 2: API Managerで、サンプルのAPI定義をインポートし、アクティブにします。
Step 3: API Managerで、API定義を参照し、アセンブリでどのような処理がされているか、確認します。
Step 4: API Managerのテスト画面でテスト呼び出しをし、応答が戻されることを確認します。

ここまでが、基本的な動作確認の流れです。
チュートリアルでは、さらに、API定義のカスタマイズ(セキュリティパラメータとしてクライアントシークレットの追加)や分析画面の確認の手順が紹介されています。
Step 5: API定義にセキュリティパラメータ(クライアントシークレット)を追加します。
Step 6: API Managerの分析画面でAPIの使用状況を確認します。

サンプルチュートリアルのアセンブリ処理の概要

API Connectでは、API定義にバックエンドのAPIを呼び出すためのInvokeポリシーを組み込んだり、データのマッピングを行うMapポリシーなどを組み込んで、API呼び出し時のカスタム処理を追加できます。
アセンブリや組み込みポリシーの詳細については、API Connectのドキュメント(API policies and logic constructs)を参照してください。
IBM API Connectでは、OpenAPI仕様を拡張して、カスタム処理を実装します。
IBM extensions to the OpenAPI specification

サンプルAPIのアセンブリを確認します。
assembly.png

このフローでは、5つの組み込みポリシーが使用されています。それぞれのポリシーでどのような処理が実施されているのでしょうか。

タイトル 組み込みポリシー 説明
order lookup Invoke 受注システム(ダミー)のAPIを呼び出し、受注情報を取得します。
ダミーの応答メッセージ例(JSON):
{
 "created_at": "2023-04-27T06:02:56.400678092Z",
 "shipped_at": "2023-04-30T06:02:56.40067907Z",
 "order_number": "256","status": "SHIPPED",
 "delivery_method": "UPS",
 "tracking_reference": "1Z001985YW90838348"
}
parse response Parse Invokeポリシーの応答オブジェクトを解析し、後続フローのMapポリシーなどで、データ要素への参照を可能にします
map input to lambda Map Parseポリシーで解析されたオブジェクトデータ内の特定の項目を抽出、マッピングします
lambda: track shipment Invoke 配送システム(ダミー)のAPIを呼び出し、配送状況の情報を取得します
combine data for response Map 受注情報と配送状況の情報をマージして、応答メッセージを生成します

実際のマッピングの画面を紹介します。
「map input to lambda」のマッピングでは、order lookupの呼び出しの応答メッセージ中の2項目(delivery_method, tracking_reference)がマッピングされており、この2項目は、実は後続のlambda: track shipmentの入力データとして利用されています。
map1.png

「combine data for response」のマッピングでは、order lookupの応答メッセージのorder部分と、lambda: track shipmentの応答メッセージ中のstatus項目部分を抽出、マージしたメッセージを生成し、応答メッセージとして戻しています。
map2.png

API定義をAPI ConectでこのAPI定義を実際に呼び出した時の応答メッセージ例は以下になります。
orderデータ部分のJSONのエレメントが一部順序が入れ替わっていますが、tracking_statusデータ部分とともに応答メッセージとして戻されてることがわかります。

{
    "order_number": "128",
    "tracking_status": [
        {
            "code": "SR",
            "description": "Your package was released by the customs agency.",
            "simplifiedTextDescription": "Delivered",
            "statusCode": "003",
            "type": "X"
        }
    ],
    "shipped_at": "2023-04-30T08:11:18.621052193Z",
    "tracking_reference": "1Z001985YW90838348",
    "status": "SHIPPED",
    "created_at": "2023-04-27T08:11:18.62105138Z"
}

おわりに

今回は、サンプルチュートリアルで提供されている複数のバックエンドAPI呼び出しの概要をご紹介しました。
API Connectのシステム構築において、API定義でどのような処理を実装するのかは、システム設計の重要な検討ポイントになります。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?