引言:有人可能要问,要实现天气查询功能,网上随便一搜,一大把,为何,要绕道去无服务器云函数中去实现这个天气查询的功能,其实,网上给的天气api接口,返回的天气信息,都是以json的形式返回,在展现给客户之前,还需要经过一般处理的。于是就有了笔者的这篇文章。开篇之作。
下面我做一个简单的例子,把无服务器云函数SCF API网关 第三方API接口三者结合起来,提供一个能查询天气预报的服务,在这个框架里不需要配置WEB容器、不需要搭建运行环境、不需要购买负载均衡,通过配置和一段代码就能完成一个查询天气预报的服务提供出去。 API网关 无服务器云函数SCF 云市场的结合架构图
整个这个架构搭建分三部分设置,第三方API接口,编写函数代码,设置API网关,调试成功就可以开放API地址了。
申请第三方天气API接口 进入云市场选择手机号归属地查询(免费)服务,开通该服务,获取到服务的密钥等,填写到对应的代码中。本例使用的第三方天气api接口是阿里云,云市场提供的天气API接口,为什么选择这里呢,因为有1000次的免费调用api额度,就算是付费,也只需要少许的钱,就能拥有1万次的调用。大家请自行准备好天气api接口。 无服务器云函数SCF 第一步:创建一个函数 直接在腾讯云控制台,无服务器云函数中新建设一个函数,可以选择空白函数,或者模板函数,然后填写函数名称,选择运行环境,本例选择,空白函数,运行环境选择 Python2.7 代码模块如下:
代码语言:javascript复制# -*- coding: utf8 -*-
import json
import urllib, urllib2, sys
def main_handler(event,content):
if "requestContext" not in event.keys():
return {"errorCode":410,"errorMsg":"event is not come from api gateway"}
city=event["queryStringParameters"]["city"] #获取API网关设置的参数,如图(API网关设置)
host = 'http://weatherq.market.alicloudapi.com' #api接口地址
path = '/clouds/query/weather/details'#api接口路径
method = 'GET'
appcode = 'apicode'#从API接口服务商获取appcode相关信息
querys = 'cityNameOrId=' city #cityNameOrId 此参数,是根据api接口文档中指定的。
bodys = {}
url = host path '?' querys #拼接URL
request = urllib2.Request(url)
request.add_header('Authorization', 'APPCODE ' appcode)
response = urllib2.urlopen(request)
content = response.read()
res=json.loads(content)
city = res['data']['todayDetails']['city']
wendu = res['data']['currentDetails']['temp']
fengxiang = res['data']['currentDetails']['windDirection']
fengli = res['data']['currentDetails']['windStrength']
shidu = res['data']['currentDetails']['humidity']
time = res['data']['currentDetails']['refreshTime']
#注意拼接字符串时,字符前加u 如u':当前实况天气,',否则报错
res = city u':当前实况天气,' u'温度:' wendu u'℃' u',' u'湿度:' shidu u',' u'风向:' fengxiang u',' u',风力:' fengli u'。'
return {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {'Content-Type': 'text/html'},
"body": res
}
第二步 API网关配置
在编写函数的界面,选择触发方式,然后点击新增触发方式
依次选择,触发方式,API网关触发器,选择新建API服务,填写API服务名称,请求方式 GET ,发布环境,发布,为了方便调试效果,鉴权方法选免鉴权。如下图所示。
API网关参数设置,如下图所示。
第三步 调式API接口,及返回数据效果 API网关调式结果:如下图
Postman返回结果:
至此,搭建无服务器应用--无服务器云函数 SCF API网关 第三方天气api接口(实现天气查询功能)请成功的实现了,第一次发布实践性的文章,写得不好的地方,大家多多指正,欢迎留言评论。