文档

搭建无服务器应用之手机号归属地查询

更新时间:

本文主要介绍配合使用API网关、函数计算和云市场三种产品,搭建一个可以查询手机号归属地的服务。在这个框架里不需要配置Web容器、不需要搭建运行环境、不需要购买负载均衡,通过配置和一段代码即可完成一个高扩容无服务器的应用服务。

服务架构图

API网关+函数计算+云市场

操作步骤

此架构的搭建可以分为三部分:

1. 云市场服务购买,此处使用了免费服务。

2. 编写函数代码。

3. 设置API网关。调试成功就可以开放API地址了。

第一步:在云市场申请服务

  1. 登录云市场

  2. 搜索查找应用手机号码归属地查询

  3. 开通该服务,并获取到服务的AppCode。

第二步:设置函数计算

  1. 创建一个服务。

    在函数控制台上创建一个服务,填写名称和备注。具体操作请参考函数计算创建服务

    若您已有函数服务,可以忽略这一步。

  2. 创建空白函数。

    选用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)                        
  3. 通过控制台调试程序。

    如果想在控制台进行对程序调试,可以在执行页面的触发事件中加入模拟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网关

  1. 创建API分组。

    在API网关控制台上,创建API分组。具体操作请参考创建API分组

    如果已有分组,可以忽略这一步。

  2. 创建API。

    在API网关控制台上,根据页面指示,完成4步操作,创建API。具体操作请参考创建API

    说明

    填写信息时,为了演示效果,此处选择了不认证。一般对外的分组建议都选用阿里云APP认证,确保API请求安全和计量统计。

    定义API请求:请求的Path即使最终暴露给客户的路径。

    入参定义:需定义入参名,传入手机号。本例中设置入参名为mob。

    定义API后端服务:后端服务类型需选择FunctionCompute;Service和Function填入之前在函数计算中设置好的参数。

    说明
    1. 建议API网关与函数计算选择在同一区域,以免走公网响应时间变长。

    2. API网关上设置的超时时间应不小于函数执行的时间,以避免API网关提前终止请求响应。

  3. 返回结果示例。

    参考手机号归属地提供商的返回值,填写到API网关中,代码如下:

    {
      "status": "0",
      "msg": "ok",
      "result": {
        "province": “浙江”,
        "city":“杭州”,
        "company": “中国移动”,
        "cardtype": "GSM"
      }
    }
  4. 测试执行效果。

    调试API页面,在请求串里填写手机号,执行后,即可看到手机号归属地的返回。

通过URL地址发请求

API网关支持绑定自定义域名。如果您有自己的独立域名,您可以在API网关控制台 > 分组管理页面进行域名绑定。

下面以系统提供的二级域名来简单试验。如下图,把地址拼接完整的请求地址,通过浏览器试验访问效果。

二级域名可以在分组管理页面查到:

  • 本页导读 (0)
文档反馈