すべてのプロダクト
Search
ドキュメントセンター

API Gateway:API Gatewayを使用したHTTPバックエンドサービスへのアクセス

最終更新日:Sep 29, 2024

このトピックでは、API GatewayでHTTPタイプのバックエンドサービスを使用するAPIを作成および公開する方法に関するクイックガイドを提供します。 このトピックでは、Alibaba Cloud App認証タイプに基づいてアプリケーションとAppKeyとAppSecretのペアを使用してAPIを呼び出す方法についても説明します。

前提条件

説明

この例では、VPCにデプロイされたECSインスタンスが使用されます。 ECSインスタンスは、API Gatewayインスタンスと同じリージョンにあります。 ECSインスタンスでは、Apacheがデプロイされ、デフォルトの80ポートを使用します。 詳細については、「手順4: Apacheのデプロイ」をご参照ください。

処理中

次の手順を順番に実行する必要があります。

  1. HTTPバックエンドサービスの作成

  2. APIグループの作成

  3. APIの作成

  4. アプリケーションを作成し、アプリケーションにAPIの呼び出しを許可します

  5. APIのデバッグ

  6. APIの呼び出し

HTTPバックエンドサービスの作成

API Gatewayでは、バックエンドサービスをリージョンのリソースとして設定し、管理を簡素化できます。 API Gatewayコンソールでバックエンドサービスを作成し、異なる環境でバックエンドサービスに異なるURLを設定するだけで済みます。 その後、設定されたバックエンドサービスを直接選択してAPIを作成できます。

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [バックエンドサービス] を選択します。 表示されるページで、右上隅の [バックエンドサービスの作成] をクリックします。

  2. [バックエンドサービスの作成] ダイアログボックスで、[名前][httpd-online] に、[入力][HTTP/HTTPSサービス] に設定し、[確認] をクリックします。

  3. [バックエンドサービス] ページで、[httpd-online] バックエンドサービスをクリックします。 [バックエンドサービス定義] ページで、[運用] タブをクリックし、右上隅の [作成] をクリックします。

  4. [基本情報] ページで、[*** アドレス] ボックスに [http:// 192.168.*.***:80] と入力し、[公開] をクリックします。

    image

    説明

    http:// 192.168.*.***:80は、作成されたECSインスタンスのプライベートIPアドレスです。

APIグループの作成

APIはAPIグループで管理されます。 APIを作成する前に、APIグループを作成する必要があります。

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択します。 [APIグループ] ページで、右上隅の [グループの作成] をクリックします。

  2. [グループの作成] ダイアログボックスで、[インスタンス] ドロップダウンリストからインスタンスを選択し、[グループ名][httpd-demo] に設定し、[BasePath][/] に設定して、[確認] をクリックします。

    image

説明
  • [APIグループ] ページで、作成したグループを表示し、グループ名をクリックして [グループの詳細] ページに移動します。 [グループの詳細] ページで、ドメイン名のバインド基本情報の変更、およびAPIグループのインスタンスタイプの変更を行うことができます。

  • API Gatewayは、APIグループにパブリックセカンドレベルドメイン名を自動的に割り当てます。 このドメイン名はデバッグにのみ使用され、中国本土以外のリージョンでは1日あたり100回の呼び出し、中国本土内のリージョンでは1日あたり1,000回の呼び出しの制限があります。 APIグループを作成した後、独立したドメイン名をバインドすることを推奨します。

APIの作成

  1. API Gatewayコンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択します。

  2. [APIグループ] ページで、作成したhttpd-demoグループを見つけ、[操作] 列の [APIの管理] をクリックします。

  3. [API] ページで、右上隅の [APIの作成] をクリックします。

  4. [APIの作成] ウィザードの [基本情報] ステップで、次のパラメーターを設定し、[次へ] をクリックします。

    パラメーター

    グループ

    httpd-デモ

    API名

    httpd-test

    セキュリティ認証

    Alibaba Cloudアプリ

    AppCode認証

    AppCode認証の有効化 (ヘッダーとクエリ)

    署名アルゴリズム

    HMAC_SHA256

    image

  5. [APIリクエストの定義] ステップで、次のパラメーターを設定し、[次へ] をクリックします。

    image

    説明

    この手順では、webブラウザー、モバイルアプリ、ビジネスシステムなどのクライアントがAPIを要求する方法を定義します。 この手順で設定する必要があるパラメーターには、プロトコル、リクエストパス、HTTPメソッド、リクエストモード、および [リクエストパラメーター] セクションのパラメーターが含まれます。 この例では、Request Modeパラメーターはパススルーに設定されています。 これは、API Gatewayがクライアントから送信されたパラメーターを処理せず、それらをバックエンドに直接渡すことを示します。

  6. [バックエンドサービスの定義] ステップで、次のパラメーターを設定し、[次へ] をクリックします。

    パラメーター

    設定モード

    [既存のバックエンドサービスを使用] を選択します。

    バックエンドサービスタイプ

    [HTTP/HTTPSサービス] を選択します。

    バックエンドサービス

    httpd-online

    バックエンドリクエストパス

    /

    HTTPメソッド

    GET

    バックエンドサービスのタイムアウト期間

    10000

    image

    説明

    このステップでは、API Gatewayがクライアントから受信したリクエストを送信するバックエンドサービスのタイプとURL、およびパラメーターのマッピングと処理方法を設定します。 この例では、Backend Service TypeパラメーターはHTTP/HTTPS Serviceに設定されています。

  7. [応答の定義] ステップで、ビジネス要件に基づいてページのパラメーターを設定し、[作成] をクリックします。

  8. 表示されるメッセージで、[公開] をクリックします。

    image

  9. 表示される [APIの発行] ダイアログボックスで、環境を [リリース] に設定し、[備考] セクションに備考を入力し、[発行] をクリックします。

    image

    説明

    APIを変更した後、変更を有効にするには、対応する環境にAPIを公開する必要があります。 API Gatewayには、テストプレリリース本番の3つの組み込み環境があります。

アプリケーションを作成し、APIの呼び出しを許可する

アプリケーションは、APIを呼び出すために使用するIDです。 この例の [APIの作成] ステップでは、認証方法がAlibaba Cloud Appに設定されています。 したがって、APIが公開された後、アプリケーションを作成し、アプリケーションにAPIを呼び出す権限を付与する必要があります。

アプリケーションの作成

  1. API Gatewayコンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [アプリ] を選択します。

  2. [アプリ] ページで、右上隅の [アプリの作成] をクリックします。

  3. [アプリの作成] ダイアログボックスで、[アプリ名] パラメーターを設定し、[確認] をクリックします。 この例では、httpdがアプリケーション名として使用されます。

    image

  4. [アプリ] ページで、作成した [httpd] アプリケーションをクリックします。 [アプリの詳細] ページで、[AppKey][AppCode] の2つの認証方法が利用できることがわかります。 AppKeyメソッドには、ユーザー名とパスワードのペアと同様に機能するAppKeyAppSecretのペアが含まれます。 APIを呼び出すときは、AppKeyをパラメーターとして渡す必要があります。 AppSecretは、署名の計算に使用されます。 API Gatewayは、AppKeyとAppSecretのペアを検証してIDを認証します。

    image

アプリケーションにAPIを呼び出す権限を付与する

  1. API Gatewayコンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[APIの管理] > [API] を選択します。

  2. APIページで、作成されたhttp-test APIを見つけ、[操作] 列で image /> [許可] を選択します。

  3. [権限付与] ページで、[ステージ] パラメーターを [リリース] に設定します。 [承認用アプリの選択] セクションの検索バーに、作成したアプリケーションの名前を入力します。 検索結果で、作成したアプリケーションを選択し、[操作] 列の [追加] をクリックし、[確認] をクリックします。 アプリケーションがAPIの呼び出しを許可されていることを通知するメッセージが表示されます。

    image

APIのデバッグDebug the API

API Gatewayはオンラインデバッグをサポートしています。 クライアントでこのAPIを呼び出す前に、この機能を使用してAPIが正しく構成されているかどうかを確認することを推奨します。

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [デバッグ] を選択します。

  2. [デバッグAPI] ページで、作成したhttpd-test APIを選択し、検証方法を [AppSecretの使用] に設定し、[リクエストの送信] をクリックします。 次の情報は、設定が成功したことを示します。

    image

APIの呼び出し

上記の手順を実行することで、APIを作成して公開し、APIを呼び出すためのアプリケーションを作成して承認し、APIをデバッグしました。 このステップでは、API Gatewayによって提供されるSDKを使用して、ビジネスシステムから公開されたAPIを呼び出すことができます。

方法1: SDKを使用してAPIを呼び出す

  1. API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [SDK] を選択します。

  2. SDKページで、[他の言語の署名サンプルコード (参照のみ)] セクションで [Node.js] を選択し、[Node.jsのサンプルコードの表示] をクリックします。

  3. $ npm install aliyun-api-gateway -Sコマンドを実行し、nmpを使用してサンプルSDK for Node.jsをインストールします。

    次のコードスニペットで、この例で作成したアプリケーションのAppKeyとAppSecretにYOUR_APP_KEYYOUR_APP_SECRETを設定します。

    // Import the SDK for Node.js that you downloaded.
    const Client = require('aliyun-api-gateway').Client;
    // Create an instance for the authorized application. Specify the AppKey and AppSecret of the authorized application.
    const client = new Client('YOUR_APP_KEY','YOUR_APP_SECRET');
    async function get() {
    // Use the domain name of the API group to which the API that you want to call belongs. You can use the public second-level domain name provided by API Gateway to test API calls. However, a limit is imposed on the number of API calls. We recommend that you bind an independent domain name to the API Group.
      var url = 'YOUR_GROUP_DOMAIN';
      var result = await client.get(url, {
    // Specify the request header. Some APIs can return data formats based on the specified response type. We recommend that you manually define the request header based on your business requirements. 
        headers: {
          accept: 'application/json'
        },
      });
      console.log(JSON.stringify(result));
    }
    get().catch((err) => {
      console.log(err.stack);
    });                

方法2: cURLを使用してAPIを呼び出す

API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [アプリ] を選択します。 [アプリ] ページで、許可されたアプリケーションをクリックし、表示されるページでそのアプリケーションコードを取得します。 次に、次のサンプルコードを使用してAPIを呼び出します。

curl -i -X GET "http://3fbf0648d01e4aa5a1d*******-cn-hangzhou.alicloudapi.com" -H "Authorization:APPCODE c404eca23959492b9f0e4d4d15****"

image