全部產品
Search
文件中心

API Gateway:通過API Gateway訪問HTTP協議的後端服務

更新時間:Nov 28, 2024

本文將快速引導您如何在API Gateway中,訪問後端服務為HTTP協議的服務,並如何使用“阿里雲APP”認證中的AppKey和AppSecret進行調用。

前提條件

說明

本例API Gateway的後端服務選擇的是Virtual Private Cloud的ECS執行個體且ECS執行個體與API Gatewayregion相同,ECS中部署了Apache服務,具體可參見部署Apache服務,使用預設80連接埠。

方案概覽

本篇內容將從建立後端服務開始,逐步介紹如何通過API Gateway進行後端服務的管理。步驟包括建立API、建立APP並將其與API建立授權關係。我們還將使用線上調試功能來確認API配置的成功,最後會示範如何使用SDK和curl兩種方式調用API的過程。

大致分為以下幾步:

  1. 建立後端服務:將後端服務配置為API Gateway所在地區內的資源,您可以在建立API時直接選擇已配置的後端服務。

  2. 建立分組:作為API的嵌入式管理單元,能更好地對API進行分類管理,提供更清晰的組織架構。

  3. 建立API:在API Gateway控制台上執行建立API操作,實現對API的建立。

  4. 建立應用和API授權:建立應用(APP)作為調用API服務時的身份,並建立與API的授權關係,以確保在API發布後能夠正常訪問。

  5. 調試API:使用API Gateway提供的線上調試功能,驗證API的配置是否成功。

  6. 調用API:您可以使用API Gateway提供的SDK,以及curl命令列工具調用線上環境發布的API,實現業務系統中對API的叫用作業。

步驟一:建立後端服務

API Gateway允許將後端服務配置為region內的資源,簡化管理流程。您只需在API Gateway控制台建立後端服務,並在其環境中配置不同的後端服務地址。隨後,在建立API時,直接選用已配置的後端服務即可。

  1. 登入API Gateway控制台,並在頂部功能表列選擇地區。在左側導覽列的API管理 > 後端服務中,單擊右上方建立後端服務

  2. 填寫名稱httpd-online類型選擇HTTP(s) 服務後,單擊確定

  3. 單擊進入後端服務名稱為httpd-online 的後端服務,選擇線上,單擊右上方建立

    image

  4. 進行基本資料配置,輸入後端服務地址為http://192.168.*.***:80,單擊發布

    說明

    http://192.168.*.***:80 為建立ECS執行個體的私網IP地址。

    image

步驟二:建立分組

API分組是API的嵌入式管理單元,因此需要先建立API分組,然後在分組下建立API。

說明
  • 分組列表查看建立的分組,單擊分組名稱可以進入到分組詳情頁,進行綁定網域名稱修改基本資料變更分組執行個體等操作。

  • API分組會自動分配公網次層網域,此次層網域僅供調試使用,如果直接存取此網域名稱,每天有1000次的限制(海外Region及中國香港限制100次/天)。因此建議為分組綁定自己的獨立網域名稱後使用。

  1. 在左側導覽列的API管理 > 分組管理中,單擊右上方建立分組

  2. 選擇執行個體,輸入分組名稱httpd-demoBasePath/,單擊確定

    image

步驟三:建立API

  1. 在左側導覽列的API管理 > 分組管理中,單擊所建立的httpd-demo分組操作列下的API管理

  2. API列表頁面,單擊右上方建立API

  3. 進行基本資料配置,配置如下資訊,單擊下一步

    image

    配置項

    樣本值

    分組

    httpd-demo

    API名稱

    httpd-test

    安全認

    阿里雲APP

    AppCode認證

    允許APPcode(header&Query)認證

    簽名演算法

    HMAC_SHA256

  4. 進行定義API請求配置,配置如下資訊,單擊下一步

    說明

    定義用戶端(如瀏覽器、手機APP或其他的業務系統)如何請求您的API,需要確定的內容包括請求協議、請求Path、HTTP Method、入參請求模式和入參定義。在本例中,入參請求方式選擇入參透傳,表示用戶端發送過來的參數API Gateway不做處理,直接透傳給後端。

    image

  5. 進行定義API後端服務配置,配置如下資訊,單擊下一步

    說明

    定於API Gateway收到用戶端的請求後,進行何種參數映射、處理方式,以及串連到後端地址。本例中,選擇了後端服務類型為HTTP(S)服務。

    image

    配置項

    樣本值

    後端配置

    選擇使用已有的後端服務

    後端服務類型

    選擇HTTP(s)服務

    後端服務

    httpd-online

    後端請求Path

    /

    HTTP Method

    GET

    後端逾時

    10000

  6. 定義返回結果欄,單擊建立

  7. 在建立成功後彈框中,單擊發布

    image

  8. 在發布彈框中,發布的環境選擇線上,輸入請填寫變更備忘,單擊發布

    說明

    對API進行過修改後,都需要發布到對應的環境,API Gateway內建了三個環境(線上預發測試),發布配置才會生效。

    image

步驟四:建立應用和API授權

應用(APP)是調用API服務時的身份。在本例建立API時,認證方式選擇的是“阿里雲APP認證”,因此在API發布後,還需要建立APP,並將APP和API的授權關係建立好,才能夠正常訪問。

建立應用

  1. 在左側導覽列的API調用 > 應用管理中,單擊右上方建立APP

  2. 輸入應用程式名稱,單擊確定

    image

  3. 在左側導覽列的應用管理中,單擊已建立好的httpd應用程式名稱,進入應用詳情頁面,可以看到阿里雲APP下有兩種認證方式,AppKeyAppCodeAppKey方式有一組AppKeyAppSecret,您可以理解為帳號密碼,調用API的時候需要將AppKey做為參數傳入,AppSecret用於簽名計算,網關會校正這對金鑰組您進行身份認證。

    image

對API進行授權

  1. 在左側導覽列的API管理 > API列表中,單擊目標http-testAPI操作image授權

  2. 選擇選擇要授權的環境線上。搜尋之前建立的應用,單擊添加確定,提示授權成功,即成功授權。

    image

步驟五:調試API

API Gateway提供了線上調試的功能,因此一般建議在API Gateway上完成API配置之後,先通過此功能確認API是否配置成功,然後再通過用戶端進行調用。

  1. 在左側導覽列的API調用 > 調試中,選擇所建立的httpd-testAPI,驗證方式選擇使用AppSecret,然後單擊發送請求

  2. 看到如下圖所示的調用結果資訊,說明配置成功。

    image

步驟六:調用API

通過以上步驟,您已經建立API、建立APP、建立了授權關係,調試API完成,並將API發布到線上環境,下面介紹如何通過調用API Gateway提供的SDK,來在您的業務系統中調用發布好的API。

使用SDK調用API

  1. 在左側導覽列的API調用 > SDK中,選擇進入其他語言簽名程式碼範例(樣本僅供參考)Node.js查看Node.js版簽名程式碼範例

  2. 通過npm安裝API Gateway的Node.js樣本SDK,$ npm install aliyun-api-gateway -S

    在如下的程式碼片段中,將YOUR_APP_KEYYOUR_APP_SECRET填寫為本例中建立的APPKey的對應資訊。

    // 匯入網關nodejs sdk
    const Client = require('aliyun-api-gateway').Client;
    // 執行個體化一個認證對象,入參需要傳入授權應用的AppKey,AppSecret
    const client = new Client('YOUR_APP_KEY','YOUR_APP_SECRET');
    async function get() {
    // API分組的網域名稱,測試階段可以使用公網次層網域,但有一定的訪問限制,建議正式環境綁定您的獨立網域名稱
      var url = 'YOUR_GROUP_DOMAIN';
      var result = await client.get(url, {
    //請求響應體類型部分 API 可以根據指定的響應類型來返回對應資料格式,建議手動指定此要求標頭 
        headers: {
          accept: 'application/json'
        },
      });
      console.log(JSON.stringify(result));
    }
    get().catch((err) => {
      console.log(err.stack);
    });                

使用curl調用API

在左側導覽列的API調用 > 應用管理中,找到授權的APP,單擊進入擷取APPCode。然後按照以下樣本調用API。

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

image