本文將快速引導您如何在API網關中,訪問后端服務為HTTP協議的服務,并如何使用“阿里云APP”認證中的AppKey和AppSecret進行調用。
前提條件
創建VPC環境,可參見搭建IPv4專有網絡和搭建IPv6專有網絡。
創建ECS服務器,可參見創建ECS實例。
本例API網關的后端服務選擇的是專有網絡VPC的ECS實例且ECS實例與API網關region相同,ECS中部署了Apache服務可參見部署Apache服務,使用默認80端口。
配置流程
您需要依次完成以下步驟:
創建后端服務
API網關允許將后端服務配置為region內的資源,簡化管理流程。您只需在API網關控制臺新建后端服務,并在其環境中配置不同的后端服務地址。隨后,在創建API時,直接選用已配置的后端服務即可。
登錄API網關控制臺,選擇地域并在左側導航欄選擇API管理 > 后端服務,單擊右上角創建后端服務。
在創建后端服務彈框中,填寫名稱為
httpd-online
,類型選擇HTTP(s)服務
,單擊確定。在后端服務列表頁面,單擊
httpd-online
的后端服務,選擇線上,單擊右上角創建。在基本信息頁面,輸入后端服務地址為
http://192.168.*.***:80
,單擊發布。說明http://192.168.*.***:80
是創建ECS實例的私網IP地址。
創建分組
API分組是API的管理單元,因此需要先創建API分組,然后在分組下創建API。
登錄API網關控制臺,選擇地域并在左側導航欄選擇API管理 > 分組管理,單擊右上角創建分組。
在創建分組彈框頁面,選擇實例,輸入分組名稱為
httpd-demo
,BasePath為/
,單擊確定。
在分組列表查看創建的分組,單擊分組名稱可以進入到分組詳情頁,進行綁定域名、修改基本信息、變更分組實例等操作。
API分組會自動分配公網二級域名,此二級域名僅供調試使用,如果直接訪問此域名,每天有1000次的限制(海外Region及中國香港限制100次/天)。因此建議為分組綁定自己的獨立域名后使用。
創建API
登錄API網關控制臺,選擇地域并在左側導航欄選擇API管理 > 分組管理。
在分組列表頁面下,單擊所創建的
httpd-demo
分組操作列下的API管理。在API列表頁面,單擊右上角創建API。
在創建API頁面的基本信息欄,配置如下信息,單擊下一步。
配置項
示例值
分組
httpd-demo
API名稱
httpd-test
安全認證
阿里云APP
AppCode認證
允許APPcode(header&Query)認證
簽名算法
HMAC_SHA256
在定義API請求欄,配置如下信息,單擊下一步。
說明定義客戶端(如瀏覽器、手機APP或其他的業務系統)如何請求您的API,需要確定的內容包括請求協議、請求Path、HTTP Method、入參請求模式、和入參定義。在本例中,入參請求方式選擇入參透傳,表示客戶端發送過來的參數API網關不做處理,直接透傳給后端。
在定義API后端服務欄,配置如下信息,單擊下一步。
配置項
示例值
后端配置
選擇使用已有的后端服務
后端服務類型
選擇HTTP(s)服務
后端服務
httpd-online
后端請求Path
/
HTTP Method
GET
后端超時
10000
說明定于API網關收到客戶端的請求后,進行何種參數映射、處理方式,以及連接到后端地址。本例中,選擇了后端服務類型為HTTP(S)服務。
在定義返回結果欄,單擊創建。
在創建成功之后彈框中單擊發布。
在發布彈框中發布的環境選擇線上,輸入請填寫變更備注,單擊發布。
說明對API進行過修改后,都需要發布到對應的環境,API網關內置了三個環境(線上、預發、測試),發布配置才能夠生效。
創建應用和API授權
應用(APP)是調用API服務時的身份。在本例創建API時,認證方式選擇的是“阿里云APP認證”,因此在API發布后,還需要創建APP,并將APP和API的授權關系建立好,才能夠正常訪問。
創建應用
登錄API網關控制臺,選擇地域并在左側導航欄選擇API調用 > 應用管理。
在應用與授權頁面,單擊右上角創建APP。
在創建應用頁面,輸入應用名稱,單擊確定。
在應用與授權頁面,單擊已創建好的
httpd
應用名稱,進入應用詳情頁面,可以看到阿里云APP下有兩種認證方式,AppKey
和AppCode
。AppKey
方式有一組AppKey
和AppSecret
,您可以理解為賬號密碼,調用API的時候需要將AppKey
做為參數傳入,AppSecret
用于簽名計算,網關會校驗這對密鑰對您進行身份認證。
對API進行授權
登錄API網關控制臺,選擇地域并在左側導航欄選擇API管理 > API列表。
在API列表頁面,找到已創建好的
http-test
API,單擊操作列> 授權。在授權頁面,選擇選擇要授權的環境為線上。搜索之前創建的應用,單擊添加并確定,提示授權成功,即成功授權。
調試API
API網關提供了在線調試的功能,因此一般建議在API網關上完成API配置之后,可以先通過此功能確認API是否配置成功,然后再通過客戶端進行調用。
登錄API網關控制臺,在左側導航欄選擇API調用 > 調式。
在調試頁面選擇,所創建的
httpd-test
API,驗證方式選擇使用AppSecret,然后單擊發送請求,即可看到如下圖信息說明配置成功。
調用API
通過以上步驟,您已經創建API、創建APP、建立了授權關系,調試API完成,并將API發布到線上環境,下面介紹如何通過調用API網關提供的SDK,來在您的業務系統中調用發布好的API。
方式一: 使用SDK調用
登錄API網關控制臺,在左側導航欄選擇API調用 > SDK。
在SDK/文檔自動生成頁面,選擇Node.js 然后單擊查看Node.js版簽名代碼示例。
通過npm安裝API網關的Node.js示例SDK,
$ npm install aliyun-api-gateway -S
。在如下的代碼片段中,將
YOUR_APP_KEY
和YOUR_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****"