實踐篇:搭建無服務器應用--函數計算+AIP網關+雲市場(提供手機號歸屬地查詢服務)
6月5日,阿裏雲的AIP網關上線了一個新功能,用戶定義API後端服務時可以選擇使用Function Compute,這樣API網關的用戶直接使用函數計算的技術能力,這也使得AIP網關具備可擴展的後端應用,與此同時函數計算也享受到AIP網關帶來的諸多的好處,例如API的請求流量管控、安全鑒權、訪問監控、統計等等。

整個這個架構搭建分三部分設置,雲市場服務購買(免費),編寫函數代碼,設置API網關,調試成功就可以開放API地址了。
進入雲市場選擇手機號歸屬地查詢(免費)服務,開通該服務,獲取到服務的APPCode,填寫到對應的代碼中。
第一步:創建一個服務
直接在函數控製台上創建一個服務,填寫名稱和備注,或者選擇已有的服務,直接略過這步。
第二步:創建空白函數,選用Python2.7編譯環境,設置執行時間:1500ms,執行的內存128MB,因為是調用雲市場的接口來取到內容,該接口平均響應時間在1200ms左右。
其中函數代碼塊:import logging
import urllib, urllib2, sys
import ssl
import json
def handler(event, context):
ct = json.loads(event)
mob = ct['queryParameters']['mob']
#return ct
host = 'https://jshmgsdmfb.market.alicloudapi.com' #market aliyun provider
path = '/shouji/query'
method = 'GET'
appcode = 'your appcode'
querys = "shouji="+ mob
bodys = {}
url = host + path + '?' + querys
request = urllib2.Request(url)
request.add_header('Authorization', 'APPCODE ' + appcode)
response = urllib2.urlopen(request)
content = response.read()
rep = {
"isBase64Encoded": "false",
"statusCode": "200",
"headers": {
"x-custom-header": "no"
},
"body": content
}
return json.dumps(rep)
第三步:通過控製台調試程序:
如果想在控製台進行對程序調試,可以在執行頁麵的觸發事件中加入模擬API網關invoke函數請求串:
{
"body": "",
"headers": {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Ca-Api-Gateway": "48351B11-52DB-44EE-8051-CE22A2F69A1C",
"X-Forwarded-For": "100.68.30.243"
},
"httpMethod": "GET",
"isBase64Encoded": false,
"path": "/getinfo",
"pathParameters": {},
"queryParameters": {
"mob": "13622439310"
}
}
第一步:建立分組:如果沒有分組,創建一個分組,如果有,直接略過,看下一步,創建API
第二步:建立API,通過引導頁麵,完成4步操作,填寫基本信息的時候,這個地方為了演示效果,選著不認證,一般對外的分組建議都選用阿裏雲APP認證,確保API請求安全和計量統計。
定義API請求:請求的Path就是你最終暴露給客戶的路徑,另外入參定義裏,需要填寫一個入參名,本例中設置mob,傳入一個手機號,見下圖:
定義API後端服務的時候,需要選擇FunctionCompute的類型,填寫的Serivce和Function都是事先在函數計算中設置好,這個地方填寫進去即可,
1、你API網關所在的區域跟函數計算的區域同一個,避免走公網響應時間變長
2、在API網關上設置的超時時間不小於你函數執行的時間,避免API網關提前終止請求響應。
第三步:返回結果示例:
參考手機號歸屬地提供商的返回值,填寫到API網關中,代碼如下:
{
"status": "0",
"msg": "ok",
"result": {
"province": "浙江",
"city": "杭州",
"company": "中國移動",
"cardtype": "GSM"
}
}
第四步:測試執行效果
點擊調試API頁麵,在請求串裏填寫手機號,執行後,即可看到手機號歸屬地的返回。
通過URL地址發請求效果:
在API網關中,如果自己有域名,在分組中設置自己的域名,也可以通過係統提供的二級域名來簡單試驗一下,看下圖,把地址拚接完整的請求地址,可以通過瀏覽器試驗一下效果如何。
在分組詳情中可以查到二級域名:

在瀏覽器請求的演示效果:
最後更新:2017-08-13 22:27:45