Red Hat Integration の API スタートガイド

Red Hat Integration 2020-Q4

Red Hat Integration の API スタートガイド

概要

Task Management API Provider クイックスタート(booster)を使用して、Red Hat Fuse Online、Apicurito、および 3scale API Management を使用して REST API を開発およびデプロイする方法を説明します。

前書き

Task Management API Provider クイックスタート(インポート例)を使用して、Red Hat Integration で REST API を開発およびデプロイする方法を説明します。

第1章 Red Hat Integration コンポーネントの概要

REST API を開発およびデプロイするには、以下の Red Hat Integration コンポーネントを使用できます。

Fuse Online
Red Hat Fuse は、分散型のクラウドネイティブインテグレーションプラットフォームです。Fuse Online は Red Hat の web ベースの Fuse ディストリビューションです。これは OpenShift Online Professional 層に事前にインストールされます。OpenShift(オンプレミス)クラスターにインストールすることもできます。Fuse Online は、コード開発を優先するビジネスユーザー向けです。
API Designer
Red Hat は、API デザイナーの軽量バージョンを提供します。これを使用して OpenAPI(Swagger)形式の API 定義を作成できます。Fuse Online API プロバイダー内から API Designer にアクセスできます。
3scale API Management
Red Hat 3scale API Management は、API のセキュリティー、パフォーマンス、制御、および等性を管理します。
APIdiagram

詳細は、『 Developing and Deploying API Provider Integrations 』を参照してください。

第2章 Fuse Online での Task API クイックスタートの表示、パブリッシュ、およびテスト

2.1. 作業を開始する前に

Red Hat Integration を使用して Task Management API Provider クイックスタートインテグレーションを実行する前に、OpenShift 環境が以下の設定要件を満たしていることを確認してください。

  • オンプレミスの OpenShift Container Platform(OCP)は、Fuse Online と 3scale API Management を同じクラスターにデプロイする必要があります。

2.2. クイックスタートの概要

Red Hat Integration では、クイックスタートは Fuse Online 環境にインポートできるインテグレーションの例になります。

Task Management API Provider クイックスタートは、API プロバイダーインテグレーションを設定、パブリッシュ、およびテストする方法を素早く理解するのに役立ちます。これは、営業担当者がお客様の連絡先との対話時に完了する必要のあるタスクを追跡するために使用する API をシミュレートします。「to-do」タスクの例には、「Create an account for a new contact」または「place an order for an existing contact」などがあります。API プロバイダーインテグレーションは、タスクデータを Fuse Online の PostgresDB サンプルデータベースに保存します。

2.2.1. クイックスタートを使用する手順の概要

  1. Task Management API Provider クイックスタートファイルをダウンロードします。
  2. (任意設定)クイックスタート OpenAPI JSON ファイルをインポートして API Designer で API 定義を表示します。
  3. クイックスタートの ZIP ファイルを Fuse Online にインポートしてからパブリッシュします。
  4. curl コマンドを呼び出して、公開済み Task Management API をテストします。
  5. 3scale の検出を有効にし、3scale API Management で公開された API サービスを検出します。
  6. curl コマンドを呼び出して、3scale で API サービスをテストします。

2.3. API Provider クイックスタートファイルのダウンロード

Task Management API Provider クイックスタートファイルをダウンロードし、Fuse Online にインポートできるようにする必要があります。

https://github.com/syndesisio/syndesis-quickstarts/tree/1.11/api-provider にアクセスし、これらのファイルをダウンロードします。

task-api.json (raw)

OpenAPI 形式の Task Management API 定義。このファイルを API Designer で表示し、API 構造を確認します。API 定義は、API プロバイダーインテグレーションの開始点です。

注記

このファイルの未加工バージョンをダウンロードする必要があります。

TaskAPI-export.zip
Task Management API プロバイダーインテグレーション。このファイルには、完全な API プロバイダーインテグレーション( task-api.json ファイルの API 定義に基づく)が含まれます。このファイルを Fuse Online にインポートして Fuse Online インテグレーションエディターで編集し、3scale が検出できる API サービスとして公開します。

2.4. API Designer での API 定義の表示(任意)

API Designer を使用して、OpenAPI 形式で新しい API 定義を作成できます。API Designer を使用して、既存の API 定義を表示し、編集することもできます。Fuse Online インテグレーションを構築するための開始点として API Designer を作成またはインポートする API を使用できます。

このタスクは、API Designer を使用して Task Management API パス、操作、およびデータタイプ(API 仕様の作成または編集が行われないため)を行うため、任意となります。API 仕様に慣れたら、API Designer を終了し、Fuse Online に戻り、他のクイックスタートファイル(TaskAPI-export.zip)で提供される事前にビルドされたインテグレーションをインポートします。

前提条件

手順

以下の手順に従って、API Designer で API 定義を表示します。

  1. Fuse Online の左側のナビゲーションパネルで Integrations をクリックします。
  2. Create Integration をクリックします。
  3. Choose a connection ページで API Provider カードをクリックします。
  4. ダウンロードした task-api.json ファイルの raw バージョンを Upload an OpenAPI file セクションにドラッグします。Fuse Online は、ファイルが正常にインポートされたメッセージを表示します。
  5. Next をクリックします。

    注記

    警告メッセージは無視しても問題ありません。

  6. Review/Edit をクリックします。

    API Designer で API が開きます。

  7. API の構造を確認します。これには、以下のコンポーネントが含まれます。

    • 以下の操作を使用した / パス:

      • GET: 全タスクの一覧を取得します。
      • POST - 新規タスクの作成
    • 以下の 操作を使用した /{id} パス:

      • GET - ID 別にタスクを取得します。
      • PUT: ID でタスクを更新します。
      • DELETE: ID でタスクを削除する
    • 3 つのプロパティーを持つ Task データタイプ。

      • completed整数,オプション
      • id整数必須
      • task文字列,required
  8. この OpenAPI 仕様からインテグレーションを構築するのではなく、時間を節約するには、API Designer を終了して Fuse Online に戻り、「API Provider クイックスタートファイルのダウンロード」 でダウンロードした他のクイックスタートファイル(TaskAPI-export.zip)で提供される事前にビルドされたインテグレーション全体をインポートできるようにします。

    API Designer を終了するには、Cancel を 3 回クリックし、Fuse Online コンソールに戻るまでキャンセルを 確認 します。

2.5. API プロバイダークイックスタートインテグレーションの例のインポートおよびパブリッシュ

TaskAPI-export.zip ファイルには、Task Management API Provider インテグレーションが含まれます。これは、task-api.json ファイルの API 定義に基づいています。

クイックスタートインテグレーションをインポートした後、オペレーションフローを確認してからインテグレーションをパブリッシュできます。

前提条件

手順

  1. Task API クイックスタートインテグレーションをインポートします。

    1. Fuse Online の左側のナビゲーションパネルで Integrations をクリックします。
    2. 右上の Import をクリックします。
    3. ダウンロードした TaskAPI-export.zip ファイルを Import ページにドラッグします。Fuse Online は、ファイルが正常にインポートされたことを示します。
    4. 左側のナビゲーションパネルで Integrations をクリックし、先ほどインポートした Task API インテグレーションのエントリーを表示します。設定が必要であるとエントリーに表示されますが、このインテグレーションをパブリッシュする準備は整っています。
  2. Edit Integration をクリックして、この API が提供するオペレーションのリストを表示します。

    各オペレーションにはフローが定義されます。Fuse Online では、フロー はインテグレーションの各 REST オペレーションに対して実行するコネクションおよびその他のステップを定義します。インポートされたクイックスタートは、各オペレーションの事前定義済みのフローを提供します。

  3. 各オペレーションのフローを確認するには、以下を行います。

    1. Edit flow ボタンをクリックし、そのフローのビジュアライゼーションを表示します。

      各フローにはすでに 1 つのデータベースコネクション、1 つ以上のデータマッパーステップ、およびフローを終了する 1 つの Provided API Return Path ステップが存在します。

    2. Invoke SQL ステップでは Configure をクリックし、コネクションが実行する SQL ステートメントを表示します。その後、Cancel をクリックし、オペレーションのビジュアライゼーションフローに戻ります。
    3. データマッパーステップでは、Configure をクリックし、マッピングを表示します。その後、Cancel をクリックしてビジュアライゼーションに戻ります。
    4. 各オペレーションのフローの最終ステップである Provided API Return Path ステップでは、Configure をクリックし、オペレーションによって呼び出し元に送信された可能性がある HTTP リターンコードを表示します。Cancel をクリックしてビジュアライゼーションに戻ります。
    5. オペレーションのフローの確認後、ドロップダウンメニューで Integrations> Task API> Operation の順にクリックし、別のオペレーションを選択します。
    6. この手順を繰り返し、各フローを確認します。
  4. 必要に応じて、Save をクリックし、インテグレーションの名前を編集します。
  5. 3scale に公開する前に API をテストすることができるように、最初に 3scale の検出を無効にします。

    1. Cancel をクリックし、インテグレーションの編集から終了していることを確認します。
    2. View をクリックして Integration の概要ページを開きます。
    3. Disable Discovery ボタンがある場合は、これをクリックして 3scale の検出を無効にします。ボタンラベルが Enable discovery の場合は、次の手順に進みます。

      注記: 概要ページで Enable Discovery ボタンまたは Disable Discovery ボタンが表示されない場合は、OpenShift 管理者がサービス検出を設定していないことを意味します。

    4. Publish をクリックし、インテグレーションを開始することを確認します。

      インテグレーションの概要ページには、インテグレーションのアセンブル、ビルド、デプロイ、および開始時のパブリッシュの進捗が表示されます。

  6. Task API インテグレーション概要ページに Running が表示されると、Fuse Online は Task API サービスの外部 URL を表示します。以下のような URL が表示されます。

    https://i-task-api-fuseonline.apps.openshift.com/

    この URL は、Task API サービスを Fuse Online で利用可能にします。REST API 呼び出しは、このベース URL で始まる URL を指定します。

2.6. Fuse Online での API プロバイダークイックスタートインテグレーションの例のテスト

Fuse Online の Task API クイックスタートインテグレーションの稼働時に、HTTP リクエストを Task API サービスに送信する curl ユーティリティーコマンドを呼び出すことができます。

前提条件

  • Task API インテグレーションが Running 状態であることを Fuse Online が示している必要があります。
  • Task API インテグレーションの検出が無効である必要があります。

手順

  1. インテグレーションの外部 URL をコピーします。
  2. ターミナルで以下のようなコマンドを実行し、インテグレーションの外部 URL を externalURL環境変数に割り当てます。必ず、このサンプルコマンドの URL を、コピーした URL に置き換えてください。

    export externalURL="https://i-task-api-fuseonline.apps.openshift.com"
  3. Create new task オペレーションに対してフローの実行をトリガーする curl コマンドを実行します。

    curl -k --header "Content-Type: application/json" --request POST --data '{"id":1, "task":"Create an account for new customer"}' $externalURL
    • -k を指定すると、サーバーコネクションがセキュアでなくても curl は続行および動作します。
    • --header は、コマンドが JSON 形式のデータを送信することを示します。
    • --request は、データを格納する HTTP POST コマンドを指定します。
    • --data は、保存する JSON 形式のコンテンツを指定します。この例では、コンテンツは {"id":1、"task":"Create an account for new customer"} です。completed フィールドは必須ではないことに注意してください。
    • $externalURL は呼び出す URL です。

    このコマンドは、HTTP POST リクエストを、Create new Task オペレーションのフローの実行をトリガーする Task API サービスに送信します。フロー実行により、新しいタスクがサンプルデータベースに追加され、以下のようなメッセージを返して実行された内容を示します。

    +

    {"completed":null,"id":1,"task":"Create an account for new customer"}
  4. 以下の curl コマンドを実行して、2 つのタスクを作成します。

    curl -k --header "Content-Type: application/json" --request POST --data '{"id":2, "task":"Place order for customer"}' $externalURL
    
    curl -k --header "Content-Type: application/json" --request POST --data '{"id":3, "task":"Send confirmation email to customer' $externalURL
  5. ID オペレーションによる Fetch task のフローの実行をトリガーする curl コマンドを実行します。

    curl -k $externalURL/1

    タスクを取得するには、curl コマンドに URL のみを指定する必要があります。HTTP GET コマンドはデフォルトのリクエストです。URL の最後の部分は、取得するタスクの ID を指定します。

  6. Fetch all tasks オペレーションのフローをトリガーする以下の curl コマンドを実行します。

    curl -k $externalURL
  7. 必要に応じて、ID オペレーションに対して Delete task のフローの実行をトリガーする curl コマンドを実行します。

    curl -k -X DELETE $externalURL/3

    このコマンドは、ID でタスクを取得したコマンドと同じ URL で HTTP DELETE コマンドを実行します。

  8. オプションで、PostgresDB サンプルデータベーステーブルの内容を表示できます。

    1. Fuse Online Pod の一覧を表示して、サンプルデータベース podname を取得します。

      oc get pods
    2. 以下のコマンドを入力します。syndsis-db-1-xxxxx を、サンプルデータベース podname に置き換えます。

      oc rsh syndesis-db-1-xxxxx
    3. サンプルデータベースにアクセスし、todo テーブルを表示します。

      sh-4.2$ psql -Usampledb
      
      sampledb=> select * from todo;

      以下のような結果が表示されるはずです。

      id |           task                      | completed
      ----+------------------------------------+-----------
       3 | Send confirmation email to customer |           |
       2 | Place order for customer            |     1
       1 | Create an account for new customer  |
      (3 rows)

第3章 3scale での API サービスの公開、検出、およびテスト

3.1. 3scale でのパブリッシュ済み API の検出

3scale の検出を有効にした Fuse Online で API サービスをパブリッシュした後、3scale API 管理ポータルで API サービスを検出できます。

前提条件

  • Fuse Online API インテグレーションは、3scale がインストールされているのと同じ OpenShift クラスターにデプロイされます。
  • API のサービス名およびその namespace (OpenShift プロジェクト) を把握している。
  • 3scale のユーザーまたはサービスアカウント(設定された認証モードにより異なる)には、API サービス(例: i-task-api)とその namespace を表示するのに必要な権限が必要です。
  • 3scale の検出は、「3scale で API の検出を有効化する Fuse Online の設定」で説明されているように有効になり ます。3scale の検出を有効にすると、Fuse Online は必要な 3scale アノテーションを API に自動的に追加します。

手順

  1. Fuse Online API インテグレーションの検出を有効にします。

    1. Fuse Online で Integrations を選択し、Task API インテグレーションの View をクリックします。
    2. インテグレーションの概要ページで Enable Discovery をクリックします。
    3. Publish をクリックし、インテグレーションを開始することを確認します。

      インテグレーションの概要ページには、インテグレーションのアセンブル、ビルド、デプロイ、および開始時のパブリッシュの進捗が表示されます。

    4. Task API インテグレーションの概要ページに Running が表示されるまで待ちます。
  2. 3scale で API を検出するには、以下の手順を実施します。

    1. 3scale 管理ポータルにログインします。
    2. 管理ポータルの DashboardAPIs セクションで、New Product をクリックします。
    3. Import from OpenShift を選択します。
    4. Namespace フィールドで、API が含まれる OpenShift プロジェクト(例: fuseonline )。
    5. Name フィールドで、その namespace 内の API サービスの名前を選択します(例: i-task-api )。
    6. 製品の作成 をクリックします。3scale では、プロダクト は顧客がアクセスする API で、内部 バックエンド API も含まれています。

      fuseonline 製品のページが開きます。

3.2. 3scale での API サービスのテスト

検出可能なサービスをインポートすると、3scale は新しい顧客がアクセスする API プロダクト(またはサービス)を生成します。また、Fuse Online namespace を使用して API サービスの対応する内部バックエンド URL も生成します。

テストのために API サービスを 3scale ステージングエリアにプロモートする前に、3scale で以下の作業を行う必要があります。

  • API サービスを使用するためのルール(アクセス権限、制限、課金機能)を確立するアプリケーションプランを作成します。
  • プランにサブスクライブするアプリケーションを作成します。アプリケーションは、アプリケーションプランの制約内の API にアクセスします。アプリケーションは、API への呼び出しを行うためのクレデンシャルを提供します。
  • API への呼び出し用のマッピングルールを作成します。マッピングルールにより、3scale が収集および報告するメトリクスまたはメソッドが定義されます。たとえば、マッピングルールは API サービスが受け取る GET 操作の数を追跡する可能性があります。

前提条件

  • 3scale で API を検出している。

手順

  1. アプリケーションプランを作成します。

    1. Create application plan をクリックし、Name フィールドで Basic Task Plan を入力します。このクイックスタートの例では、他のフィールドを空白のままにすることができます。
    2. Create application plan をクリックします。
    3. Publish をクリックします。
  2. アプリケーションを作成して、アプリケーションプランに関連付けます。

    1. トップメニューから Audience を選択します。
    2. John Doe default ユーザーの Developer をクリックします。
    3. Applications をクリックした後、Create Application をクリックします。
    4. Application Plan フィールドをクリックしてアプリケーションプランのドロップダウン選択一覧を開き、i-task-apiBasic Task Plan をクリックします。
    5. Name フィールドに、Task App などの名前を入力します。
    6. Description フィールドに、Fuse Online Task quickstart application などのテキストを入力します。

      Task App の概要ページが表示されます。これには、後の手順で テスト curl コマンドを実行する際に使用する ユーザーキー 値が含まれます。

  3. API サービスのマッピングルールを設定します。

    1. トップメニューから i-task-api を選択します。
    2. IntegrationMapping Rules を選択します。

      注記: 3scale では、インテグレーション は Fuse Online とは異なる意味を持ちます。3scale では、インテグレーション とは、API が 3scale と統合する方法(たとえば、API へのクライアントアクセスを管理および保護)を指します。

    3. マッピングルールを追加します。

      • Add mapping rule をクリックします。
      • Verb (動詞)を選択します( GET など)。
      • パターン を入力します(例: / または / {id}/)。
      • Create Mapping Rule をクリックします。
    4. ここに示すマッピングルールを定義するまで、サブステップ c を繰り返します。

      マッピングルールの例
  4. i-task-api 製品のステージング環境を更新するには、以下を実行します。

    1. Integration > Configuration の順に選択します。
    2. Promote v.x to Staging APIcast をクリックします。
  5. ステージング環境を使用して curl 呼び出しを実行し、API 操作をテストします。この形式の Staging APIcast セクションでは、例が提供されています。

    curl -k "https://fuseonline-i-task-api-3scale-apicast-staging.apps.test.lab.upshift.rdu2.redhat.com:443/{id}/?user_key=4466490a15df83a6b36d2838fb19a030"

    注記: {id} は有効な値に置き換えてください。Fuse Online で API をテストする場合、サンプルデータベースに保存されている 3 つのタスクを作成します。そのため、{id}12、または 3 に置き換えることができます(3 番目のタスクを削除しなかった場合)。

    以下は、確認できる curl コマンドの例です。

    • コマンドの読み取りを容易にするため、URLユーザーキー を保持する変数を作成できます。

      URL とユーザーキーの値は、3scale ステージング環境に固有の値に置き換える必要があることに 注意 してください。

      export threescaleURL=”https://fuseonline-i-task-api-3scale-apicast-staging.apps.test.lab.upshift.rdu2.redhat.com:443”
      
      export KEY=”4466490a15df83a6b36d2838fb19a030"
    • ID 1 でタスクを取得します。

      curl -k GET $threescaleURL/1/?user_key=$KEY
    • ID 1 でタスクを更新します。

      curl -k --header "Content-Type: application/json" --request PUT --data '{"id":1, "task":"Update to task 1 - to do by Friday"}' $threescaleURL/1/?user_key=$KEY
    • 新しいタスクを作成します。

      curl -k --header "Content-Type: application/json" --request POST --data '{"id":4, "task":"Check the staus of the customer order"}' $threescaleURL/?user_key=$KEY
    • すべてのタスクを取得します。

      curl -k $threescaleURL/?user_key=$KEY
    • タスクを削除します。

      curl -k -X DELETE $threescaleURL/4/?user_key=$KEY
  6. 3scale が API の対話を追跡する方法を確認するには、Analytics> Traffic をクリックし、手順 3 で定義したマッピングルールに基づいて 3scale が収集したメトリクスを表示します。

3.3. 次のステップ

API 管理の詳細については、Red Hat 3scale API Management のドキュメント を参照してください。