本文主要介绍配合使用API网关、函数计算和云市场三种产品,搭建一个可以查询手机号归属地的服务。在这个框架里不需要配置Web容器、不需要搭建运行环境、不需要购买负载均衡,通过配置和一段代码即可完成一个高扩容无服务器的应用服务。
服务架构图
API网关+函数计算+云市场
操作步骤
此架构的搭建可以分为三部分:
1. 云市场服务购买,此处使用了免费服务。
2. 编写函数代码。
3. 设置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 = 'http://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.XX.XX.XX" }, "httpMethod": "GET", "isBase64Encoded": false, "path": "/getinfo", "pathParameters": {}, "queryParameters": { "mob": "1362243****" } }
第三步:设置API网关
创建API分组。
在API网关控制台上,创建API分组。具体操作请参考创建API分组。
如果已有分组,可以忽略这一步。
创建API。
在API网关控制台上,根据页面指示,完成4步操作,创建API。具体操作请参考创建API。
说明填写信息时,为了演示效果,此处选择了不认证。一般对外的分组建议都选用阿里云APP认证,确保API请求安全和计量统计。
定义API请求:请求的Path即使最终暴露给客户的路径。
入参定义:需定义入参名,传入手机号。本例中设置入参名为mob。
定义API后端服务:后端服务类型需选择FunctionCompute;Service和Function填入之前在函数计算中设置好的参数。
说明建议API网关与函数计算选择在同一区域,以免走公网响应时间变长。
API网关上设置的超时时间应不小于函数执行的时间,以避免API网关提前终止请求响应。
返回结果示例。
参考手机号归属地提供商的返回值,填写到API网关中,代码如下:
{ "status": "0", "msg": "ok", "result": { "province": “浙江”, "city":“杭州”, "company": “中国移动”, "cardtype": "GSM" } }
测试执行效果。
调试API页面,在请求串里填写手机号,执行后,即可看到手机号归属地的返回。
通过URL地址发请求
API网关支持绑定自定义域名。如果您有自己的独立域名,您可以在API网关控制台 > 分组管理页面进行域名绑定。
下面以系统提供的二级域名来简单试验。如下图,把地址拼接完整的请求地址,通过浏览器试验访问效果。
二级域名可以在分组管理页面查到:
- 本页导读 (0)