ServerLess如何进行天气API实践

64次阅读
没有评论

共计 3850 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 ServerLess 如何进行天气 API 实践,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

前言

云计算是大势所趋

Serverless 架构即“⽆服务器”架构,它是一种全新的架构方式,是云计算时代⼀种⾰命性的架构模式

FaaS(Function as a Service – 函数即服务) 是在无状态容器中运行的事件驱动型计算的执行模型

云函数算是 FaaS 的一种具体的形式,由云商提供计算平台,开发者只需关注函数逻辑的实现,将服务器相关的配置管理工作统统交给云商去做,不再花大精力去管理服务器

我们只需要提供一段代码,由云商研制的 FaaS 方案帮我们选择语言对应技术栈的最佳实践,基于内置的扩展机制按实际需要,进行动态扩展计算资源,轻松部署服务到公网,并提供可靠的监控、报警保障,不需要以前一样,服务器资源不是大部分时间处于闲置状态,就是遇到超大浏览需要紧急扩容

给 FaaS 一个函数,就能上线一个高可用的服务

简单的服务接口开发的专业性要求降低了,前端有了更大的发挥空间,包括但不限于:

BFF(Backend For Frontend)

SSR(Server-Side Rendering)

上面简单的介绍了一下“云函数”,有一点抽象,下面就结合实操,来搞一个”实用的“

☁️搞一个简单的天气查询 API

就像这样的:点我体验

参数:cityId 地区参照表

所使用到的技术与平台

Node.js (云函数选用 JavaScript 语言)

腾讯云 – 免费的云函数服务

阿里云 – 免费的墨迹天气查询服务

下面开始手把手教程

腾讯云侧

1. 注册账号

注册腾讯云账号并登录

https://cloud.tencent.com/

2. 进入控制台

点击右上角进入控制台

3. 云函数 - 函数服务

左上角选择云产品,输入云函数,选择 云函数 - 函数服务

4. 新建云函数

新建一个云函数

5. 录入基本信息

符合规范的函数名称

环境选择一个 Node.js 的环境

选择空白函数

然后下一步

6. 完成创建

直接点击完成,什么都不更改

7. 触发器

然后来到这个界面,点击触发管理

8. 创建触发器

创建触发器,填写相关信息

触发方式 -API 网关触发

请求方法 -GET

鉴权方法 - 免鉴权

9. 大功告成

体验一下生成的触发器链接

10. 观察接口

观察响应结果与我们的代码

响应结果

我们的云函数代码

关注红色框中的内容

执行方法:index.main_handler

index 对应的就是 index.jsmain_handler 就是就是 index.js 中对外暴露的 main_handler 方法

再看代码

use strict

exports.main_handler = async (event, context) = {

console.log(Hello World)

console.log(event)

console.log(event[ non-exist])

console.log(context)

return event

};

根据上上图返回的结果可知其对应的是 event 里面的内容: 即我们可以在 event 中取到我们请求的参数,header,body 等信息,便于我们执行后续逻辑

context 的内容 (console.log 的内容) 在哪里看?

11. 日志查询

ServerLess 如何进行天气 API 实践

在日志查询面板可以查询到我们接口的调用信息,响应状态与 log 的内容

12. 安装依赖的模块

这个和本地安装差不多,一个敲命令,一个点按钮

我们使用本地终端创建一个 package.json 文件

npm init -y

ServerLess 如何进行天气 API 实践

package.json

{

name : faas ,

version : 1.0.0 ,

description : ,

main : index.js ,

scripts : {

test : echo \ Error: no test specified\ exit 1

},

keywords : [],

author : ,

license : ISC

}

如安装 axios, 本地执行安装先

yarn add axios

# or

npm i axios

此时的 package.json

{

name : faas ,

version : 1.0.0 ,

description : ,

main : index.js ,

scripts : {

test : echo \ Error: no test specified\ exit 1

},

keywords : [],

author : ,

license : ISC ,

dependencies : {

axios : ^0.21.0

}

}

在平台上创建一个 package.json 文件, 并把上述内容粘贴进去,ctrl/command + S 保存修改的内容

ServerLess 如何进行天气 API 实践

ServerLess 如何进行天气 API 实践

选择在线安装依赖,然后点击保存

ServerLess 如何进行天气 API 实践

安装完成后 会出现 node_modules 目录

ServerLess 如何进行天气 API 实践

JS 云函数创建相关流程,差不都陈述完毕

下面开始我们的代码编写

天气云函数编写

代码同步到线上的方式

可以本地编辑后上传文件

使用腾讯云的 cli 工具上传

复制粘贴

这里比较简单我们就复制粘贴了

先简单编写一下大体结构,然后点击保存,再访问刚刚的触发器链接观察返回的结果

index.js

use strict

const http = require(axios).default

function getNowWeather(cityId = 3) {

// 待编写

return {

data:{

cityId

}

}

}

exports.main_handler = async (event, context) = {

// 结构取得 url 中传递的参数

const {queryString: { cityId} } = event

return getNowWeather(cityId)

};

下面实现 getNowWeather 的逻辑就要用到阿里云的服务了

阿里云侧

先白嫖个服务

阿里云 - 免费版气象天气服务(cityid)- 墨迹天气

根据其文档中的请求示例, 我们先构建出 Node 版本的方法

const http = require(axios).default

function getNowWeather(cityId = 3) {

const token =

const appcode =

const nowStatusURL = http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition // 精简实况的请求 URL

const data = `cityId=${cityId} token=${token}` // 请求参数

const headers = {// header

Authorization : `APPCODE ${appcode}`,

Content-Type : application/x-www-form-urlencoded; charset=UTF-8

}

// 发送请求

return http.post(nowStatusURL, data, {

headers

}).then(res = res.data)

}

购买服务后根据文档找到 token 与 appcode 即可

控制台 - API 网关 - 华北 2(北京)

ServerLess 如何进行天气 API 实践

为了节约查找 token 与 appcode 的时间,下面列一下步骤(吐槽,阿里云的文档太拦了,不方便信息定位)

token 与 appcode

API 网关页面地址

token: 应用管理 - 选择一个应用 - 已授权 API 列表 - 选择自己要查看的 API- 点击调试 API- 调试面板的 token 参数即是所需参数

appcode: 应用管理 - 选择一个应用 - AppCode 面板

ServerLess 如何进行天气 API 实践

郑州做人流多少钱 http://www.hnzzxb.com/

ServerLess 如何进行天气 API 实践

最终代码

ServerLess 如何进行天气 API 实践

郑州人流医院 http://www.zztjyyfk.com/

index.js

use strict

const http = require(axios).default

function getNowWeather(cityId = 3) {

const token =

const appcode =

const nowStatusURL = http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition // 精简实况的请求 URL

const data = `cityId=${cityId} token=${token}` // 请求参数

const headers = {// header

Authorization : `APPCODE ${appcode}`,

Content-Type : application/x-www-form-urlencoded; charset=UTF-8

}

// 发送请求

return http.post(nowStatusURL, data, {

headers

}).then(res = res.data)

}

exports.main_handler = async (event, context) = {

const {queryString:{cityId}} = event

return await getNowWeather(cityId)

};

触发器链接

最后

到此一个云函数就开发完毕了

可以感觉到,如果熟悉创建流程了,只需要几分钟就能创建一个提供服务的 API,极大的节约了成本

不懂服务端部署,服务器运维,Linux 的开发者可以通过 云函数 + 云数据库(关系数据库,非关系数据库) 快速搭建一个后端服务

文件存储服务可以使用 OSS

开发者只需要通过云函数调用各服务提供的 API 即可完成一个后端服务的构建

关于 ServerLess 如何进行天气 API 实践就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3850字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)