前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实践篇:无服务器云函数 SCF+API网关+第三方天气api接口(实现天气查询功能)

实践篇:无服务器云函数 SCF+API网关+第三方天气api接口(实现天气查询功能)

原创
作者头像
邻家阿涛
修改2019-02-21 17:37:55
2.9K0
修改2019-02-21 17:37:55
举报

引言:有人可能要问,要实现天气查询功能,网上随便一搜,一大把,为何,要绕道去无服务器云函数中去实现这个天气查询的功能,其实,网上给的天气api接口,返回的天气信息,都是以json的形式返回,在展现给客户之前,还需要经过一般处理的。于是就有了笔者的这篇文章。开篇之作。

下面我做一个简单的例子,把无服务器云函数SCF+API网关+第三方API接口三者结合起来,提供一个能查询天气预报的服务,在这个框架里不需要配置WEB容器、不需要搭建运行环境、不需要购买负载均衡,通过配置和一段代码就能完成一个查询天气预报的服务提供出去。 API网关+无服务器云函数SCF+云市场的结合架构图

API网关+无服务器云函数SCF+云市场的结合架构图
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接口(实现天气查询功能)请成功的实现了,第一次发布实践性的文章,写得不好的地方,大家多多指正,欢迎留言评论。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档