創(chuàng)建 API
創(chuàng)建API即錄入API的定義,需要錄入API的基本信息、服務(wù)信息、請求信息、和返回信息,然后對創(chuàng)建的API進(jìn)行調(diào)試,及進(jìn)行安全配置。經(jīng)測試證明API可用后,可發(fā)布上線供用戶使用。
1 定義 API
在API網(wǎng)關(guān)控制臺中API列表頁面,單擊創(chuàng)建API,即進(jìn)入API的創(chuàng)建和定義流程。
1.1 定義請求的基本信息
參數(shù) | 描述 |
API分組 | 分組是API的管理單元,創(chuàng)建API之前您需要先創(chuàng)建分組,選擇分組即選擇Region。 |
API名稱 | 所創(chuàng)建的API的名稱。API名稱標(biāo)識需在所屬分組內(nèi)具有唯一性。 |
安全認(rèn)證方式 | 目前支持阿里云APP、和無認(rèn)證。
|
簽名算法 | 參與簽名的算法
|
描述 | 填寫API的相關(guān)描述。 |
1.2 定義API請求
定義用戶如何請求API,包括協(xié)議、請求Path、HTTP Method、入?yún)⒄埱竽J健⒑腿雲(yún)⒍x。
參數(shù) | 描述 |
請求協(xié)議 | 支持HTTP、HTTPS。 |
請求Path | Path指相對于服務(wù)host,API的請求路徑。請求Path可以與后端服務(wù)實(shí)際Path不同,您可以隨意撰寫合法的有明確語義的Path給用戶使用。您可以在請求Path中配置動態(tài)參數(shù),即要求用戶在Path中傳入?yún)?shù),同時(shí)您的后端又可以不在Path中接收,可以映射為在Query、Header等位置接收。 |
HTTP Method | 支持標(biāo)準(zhǔn)的HTTP Method,可選擇PUT、GET、POST、DELETE、PATCH、HEAD、OPTIONS或ANY。 |
入?yún)⒍x模式 | 可選入?yún)⒂成洌ㄟ^濾未知參數(shù))、入?yún)⒂成洌ㄍ競魑粗獏?shù))和入?yún)⑼競鳌?
|
配置入?yún)⒍x:定義您API的請求入?yún)ⅲ磁渲糜脩粜枰谑裁次恢脗魅胧裁磪?shù)。可選位置有Head、Query、Body、Path(Parameter Path),尤其當(dāng)您在Path中配置了動態(tài)參數(shù),那么在入?yún)⑴渲脮r(shí)需要對動態(tài)參數(shù)做配置說明。支持的參數(shù)類型有String、Integer、Boolean。
需要注意所有參數(shù)的名稱會校驗(yàn)是否唯一。
您可以使用左側(cè)的快捷鍵快速調(diào)整參數(shù)順序。
您可以使用操作圖標(biāo)下的移除選項(xiàng),移除不需要的參數(shù)。
如果您在Path中配置了動態(tài)參數(shù),存在參數(shù)位置為Parameter Path的同名參數(shù)。
設(shè)置參數(shù)校驗(yàn)規(guī)則:您可以單擊操作圖標(biāo)中的編輯更多配置校驗(yàn)規(guī)則。如String的長度,Number的枚舉等等。網(wǎng)關(guān)會參照校驗(yàn)規(guī)則對請求做初步校驗(yàn),如果入?yún)⒉缓戏ǎ瑒t不會到達(dá)您的后端服務(wù),大大的降低了后端服務(wù)的壓力。
1.3 定義后端服務(wù)信息
這部分主要是定義一些參數(shù)的前后端映射,具體描述的是您后端真實(shí)服務(wù)的API配置。用戶請求到達(dá)網(wǎng)關(guān)后,網(wǎng)關(guān)會根據(jù)您的后端配置映射為對應(yīng)實(shí)際后端服務(wù)的請求形式,去請求您的后端。包括后端服務(wù)地址、后端Path、后端超時(shí)時(shí)間、參數(shù)映射、常量參數(shù)、系統(tǒng)參數(shù)。
后端基礎(chǔ)定義
參數(shù) | 描述 |
后端服務(wù)類型 | 目前支持HTTP/HTTPS、函數(shù)計(jì)算、VPC、OSS、Mock五種類型。
說明 海外region及中國香港不支持新建HTTP/OSS類型后端服務(wù)。 |
VPC授權(quán)名稱 | 當(dāng)您的后端服務(wù)在VPC中時(shí),需要填寫創(chuàng)建VPC授權(quán)時(shí)設(shè)置的VPC授權(quán)名稱。 |
后端服務(wù)地址 | 后端服務(wù)的Host,可以是一個(gè)域名,也可以是http(s)://host:port的形式。填寫時(shí),必須包含http://或https://。 |
后端請求Path | Path是您的API服務(wù)在您后端服務(wù)器上的實(shí)際請求路徑。若您后端Path需要接收動態(tài)參數(shù),則需要聲明調(diào)用者需傳入?yún)?shù)的具體位置和參數(shù)名,即聲明映射關(guān)系。 |
HTTP Method | 支持標(biāo)準(zhǔn)的HTTP Method,可選擇PUT、GET、POST、DELETE、PATCH、HEAD、OPTIONS或ANY。 |
后端超時(shí) | 指API請求到達(dá)網(wǎng)關(guān)后,網(wǎng)關(guān)去調(diào)API后端服務(wù)的響應(yīng)時(shí)間。由網(wǎng)關(guān)請求后端開始到網(wǎng)關(guān)收到后端返回結(jié)果。該值不能超過30秒。超過該值網(wǎng)關(guān)會放棄請求后端服務(wù),并給用戶返回相應(yīng)的錯(cuò)誤信息。 |
配置后端服務(wù)參數(shù): 網(wǎng)關(guān)支持參數(shù)在前端、后端的全映射,包括名稱映射和位置映射。位置映射包括Path、Header、Query、Body的混排映射。也就是說,您可以將您的后端服務(wù)通過映射完成包裝成更規(guī)范、更專業(yè)的API形態(tài)。這部分就是在聲明前后端API映射關(guān)系的。
配置常量參數(shù):您可以配置常量參數(shù)。您配置的常量參數(shù)對您的用戶不可見,但是API網(wǎng)關(guān)會在中轉(zhuǎn)請求時(shí),將這些參數(shù)加入到請求中的指定位置,再傳遞至后端服務(wù),實(shí)現(xiàn)您的后端的一些業(yè)務(wù)需求。比如您需要網(wǎng)關(guān)每次請求您后端時(shí)都帶有參數(shù)abc,您可以直接將abc配置為常量參數(shù)。請求達(dá)到網(wǎng)關(guān)后,網(wǎng)關(guān)會自動在指定位置加上該參數(shù)再去請求您的后端。
配置系統(tǒng)參數(shù):指API網(wǎng)關(guān)的系統(tǒng)參數(shù)。默認(rèn)系統(tǒng)參數(shù)不會傳遞給您,但是如果您需要獲取系統(tǒng)參數(shù),您可以在API里配置接收位置和名稱。具體內(nèi)容如下表:
參數(shù)名稱 | 參數(shù)含義 |
CaClientIp | 發(fā)送請求的客戶端IP(若您配置了WAF、CDN等,則記錄的是回源IP,真實(shí)IP需要在X-Forwarded-For中查看) |
CaDomain | 發(fā)送請求的域名 |
CaRequestHandleTime | 請求時(shí)間(格林威治時(shí)間) |
CaRequestId | RequestId |
CaApiName | API名稱 |
CaHttpSchema | 用戶調(diào)用API使用的協(xié)議,http或者h(yuǎn)ttps |
CaProxy | 代理(AliCloudApiGateway) |
CaClientUa | 請求客戶端的User-Agent |
CaCloudMarketInstanceId | 請求的云市場商品的實(shí)例ID |
CaAppId | 請求的APP的ID |
CaAppKey | 請求的APP的KEY |
CaAppExtendInfo | 請求的APP的拓展字段 |
CaStage | 請求的環(huán)境(RELEASE、TEST、PRE) |
CaInstanceId | API所屬的實(shí)例ID |
CaSourceVpcId | 客戶端IP所屬的Vpc |
可以在分組詳情中設(shè)置透傳HOST頭(域名頭),開啟后API網(wǎng)關(guān)會將請求域名透傳至后端,若沒有開啟,后端收到的是用戶在API網(wǎng)關(guān)填寫的后端HOST。示例如下:
示例中API分組綁定的請求HOST為xuemeng.XXXX.com,API后端HOST為apigatewayXXXXXXalicloudapi.com:8080,配置前后如下
透傳HOST頭(域名頭)開啟時(shí):
Host: xuemeng.XXXX.com
透傳HOST頭(域名頭)未開啟時(shí):
Host: apigatewayXXXXXXalicloudapi.com:8080
您需確保您錄入的所有參數(shù)的參數(shù)名稱全局唯一,包括Path中的動態(tài)參數(shù)、Headers參數(shù)、Query參數(shù)、Body參數(shù)(非二進(jìn)制)、常量參數(shù)、系統(tǒng)參數(shù)。如果您同時(shí)在Headers和Query里各有一個(gè)名為name的參數(shù),將會導(dǎo)致錯(cuò)誤
1.4 定義返回結(jié)果
錄入返回ContentType、返回結(jié)果示例、失敗返回結(jié)果示例、和錯(cuò)誤碼定義。
2 API 調(diào)試
API定義錄入完成后,您可以在API調(diào)試頁面調(diào)試API,以確定API的可用性。
API創(chuàng)建、定義完成后,頁面自動跳轉(zhuǎn)到API列表頁。您可以通過此頁面按鈕,測試創(chuàng)建的API是否可用,請求鏈路是否正確。
單擊API名稱或管理按鈕,進(jìn)入API定義頁面。
單擊左側(cè)導(dǎo)航欄中調(diào)試API。
輸入請求參數(shù),單擊發(fā)送請求。
返回結(jié)果將顯示在右側(cè)頁面。
如果調(diào)試返回成功結(jié)果,則說明該API可以使用。
如果返回代碼為4XX或5XX,則表示存在錯(cuò)誤。請參見如何獲取錯(cuò)誤信息和錯(cuò)誤代碼表。
3 后續(xù)步驟
完成以上定義后和初步調(diào)試后,您就完成了API的創(chuàng)建。您可以發(fā)布API到測試、預(yù)發(fā)、線上環(huán)境,繼續(xù)調(diào)試或供用戶使用。還可以為API綁定客戶端簽名說明文檔等安全配置。