典型案例 3:十分钟搭建弹性可扩展的 Web API |学习笔记

简介: 快速学习 典型案例 3:十分钟搭建弹性可扩展的 Web API

开发者学堂课程【从 0 入门函数计算:典型案例 3:十分钟搭建弹性可扩展的 Web API】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/645/detail/10728


典型案例 3:十分钟搭建弹性可扩展的 Web API


内容简介

一、基本概念

二、Web API 的开发流程

三、演示 Web API 的开发流程

 

一、基本概念

在 10 分钟内搭建弹性可扩展的外部 API 主要分为3部分:

基于函数计算的 Web API 和普通 Web API 的区别和优势;

开发流程中介绍在函数计算的控制台进行 Web API 的开发;

根据实例演示函数计算外围 API 的开发过程。

常见了 Web API 的架构主要包括客户端,服务端,数据库。Web API 由服务器来提供,同时服务器还要完成负载均衡,登录鉴权,日志监控等相关操作。当客户端流量快速增加时,服务端只能通过水平扩展加机器的方式来增加自己的服务能力

这种常规模式分析主要有两点局限性:

1.除了开发业务代码还有大量的服务器运维成本来保证服务的稳定性可用性,花费大量的时间进行工作,占用开发时间,降低项目的研发效率。

2.流量突然增加时,需要水平扩展加机器,弹性的响应能力比较差,扩容速度往往需要数 10 分钟,无法实现秒级的极速扩容,这样就会导致一段时间内的服务能力不足,同时,当流量变少难以做到及时缩容,造成机器成本的浪费。

在函数计算的 Web API 架构当中与常规的 Web API 架构相比,客户端和数据库未发生变化的。

主要的变化体现在服务器端。

它的主要体现有:之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的 API 网关系统以及健全系统,开发团队无需再维护这两部分的代码,只需要维护相关的规则即可。

在这样的一个结构下服务器端的业务代码被拆分为一个一个的函数,不同的函数就代表了不同的功能。

在函数计算的 Web API 架构当中,已经没有了服务器的存在,这是因为目的就是让使用者只关注自己的业务逻辑即可,也就是每一个业务逻辑对应的函数,所以像安全问题,资源调度问题全部交给云厂商来负责。

相对于传统的项目而言,传统项目无论是否有用户访问服务器都在运行当中,就是造成了比较大的成本支出,而在 serverless 而言,只有在用户去用发起请求时函数才会被激活并执行,并且按照调用次数收费,相对来说可以在有流量的时候,才有支持,没有流量的时候就没有支出,相对来说成本会进行进一步的降低。


二、Web API 的开发流程

首先第一步登录控制台并创建一个应用,创建应用的方式有两种,第一种就是如果有现有的 web 应用,就通过第一种方式创建 web 应用,直接将的代码打包上传。第二种方式是通过模板来创建应用,就是通过这个模板的方式来创建应用,模板可以理解为它相当于是一个脚手架,可以快速的去完成一些基础配置,例如权限,角色,网关的配置。当完成创建应用之后,第二步就是在这个应用下去创建一个函数,而函数主要是支持事件函数,HTTP 函数和模板函数,选择 HTTP 函数。创建函数之后就开始开发具体的业务逻辑。业务逻辑开发完之后要配置一个触发器,配置触发器因为是 Web API 的一个方式,所以说的触发器其实就是一个 HTTP 的一个请求,然后在这个 HTTP 请求里边可以指定域名,来设定的真正的这个 HTTP 的域。然后最后一部分就是可以通过函数计算的监控来进行一调试以及服务上线之后的使用量的监控情况。


三、演示 Web API 的开发流程

首先进入管理控制台,选择应用中心,创建模板,创建应用然后选择一个基于Python 语言的简单 web 应用配置,叫做 Python API。通过这种模板方式的来创建应用相当于是一个脚手架,会把底层所依赖的一些资源帮去创建好,然后只要其实这些资源去开发一些函数就好了,这样会提高开发效率。下一步来创建一个函数,新建函数是 HTTP,下一步所在服务就选择 Python API,叫做 Python API test,语言选择 Python 3.0,触发器的名称也叫做拍 python web api,请求方式选择 get 。通过操作其实会自动生成一个叫做 Python API test 的函数。这个函数有一个最基本的实现,初始化的实现通过invoke来调用,然后就会翻译到最后,是 Hello World dispose,就在这个基础之上进行一个开发,首先先把这个格式变成一个阶层格式,返回的结果依然是 Hello World。它的一个实现的过程就是当用户按照触发器配置的路径,进行这个路径访问的时候,就会去触发到写的这个函数代码的执行,然后最终去结构给用户。

配置方式首先进入到自定义域名,需要在 FC 当中去接入到自己的一个域名,指定这样的一个服务,然后用刚才选择就是 Python API test 这样的一个函数,然后版本选择 last,当访问这个域名下的这个路径的时候就会去触发到刚才定义的这个Python API test 函数。就会返回到刚才预期的一个结果叫做 Hello World。这样完成了一个9最简单的 web API。9可以做一些更加复杂的操作。现在有这样的一个场景,有一个文件叫做 Story TXT 的文件,现在想实现一个功能就是用户去访问这个页面链接的时候,可以把这个文件的内容返回给用户。首先先 import 这个 OSS 的一个基本依赖,environment 其中包括两部分内容,一部分就是函数计算的上下文,这个上下文当中其实存了当前访问这个用户的一些基本的信息,方便做操作。第二部分包含 HTTP 请求里边的一些参数,需要用SS的话需要用到一些里面的一些参数。从 context 当中取出,可以搭配在文档中然后来看,具体内容还有其他的。

返回如果没有权限就需要给当前的这个函数计算加一个角色,赋予访问时经过的权限。给 Python API test 所在的应用创建角色,并且给这个角色赋予了访问权限。执行可以看到打印出来“阿里巴巴 is Happy Child”。把最终的这个结果返回给访问的用户。

整个逻辑再梳理一下就是首先去配置自定义域名,并且在这个域名下去配路径,然后当用户去访问这个路径的时候,就会触发到的触发器,触发器就会去调函数,然后在函数过程当中,去访问了 oss 当中叫做 storage TXT 的文件,并且把文件的这个内容返回给几个用户,这样一个完整的功能就实现了。函数的调用情况在这个函数指标的地方可以看到最近一个小时所有的一个调用情况。

相关文章
|
11月前
|
Java 数据库 网络架构
菜鸟之路Day36一一Web开发综合案例(部门管理)
本文详细记录了基于Spring Boot的Web开发综合案例——部门管理功能的实现过程。从环境搭建到功能开发,涵盖数据库表设计、Spring Boot项目创建、依赖引入、配置文件设置以及Mapper、Service、Controller的基础结构构建。文章重点讲解了查询、删除、新增和修改部门信息的业务逻辑实现,遵循RESTful规范设计接口,并通过统一响应结果类`Result`优化前后端交互体验。借助Spring的IoC容器管理与MyBatis的SQL映射,实现了高效的数据操作与业务处理,最终完成部门管理的全功能开发。
361 12
|
10月前
|
XML SQL 前端开发
菜鸟之路Day37一一Web开发综合案例(员工管理)
本文介绍了基于Web开发的员工管理综合案例,涵盖分页查询、条件分页查询、删除员工和新增员工四大功能模块。通过前后端交互,前端传递参数(如页码、每页记录数、查询条件等),后端使用MyBatis与PageHelper插件处理数据查询与操作。代码结构清晰,包括Controller层接收请求、Service层业务逻辑处理以及Mapper层数据访问,并结合XML动态SQL实现灵活的条件查询。此外,新增与删除功能分别通过POST与DELETE请求完成,确保系统功能完整且高效。
300 7
|
10月前
|
存储 前端开发 Java
菜鸟之路Day38一一Web开发综合案例(三)
本文介绍了Web开发中的文件上传与员工信息修改的综合案例,涵盖前端到后端的完整流程。重点讲解了阿里云OSS的集成,包括Bucket创建、密钥获取及SDK使用,并通过Spring Boot实现文件上传功能。同时,详细描述了员工信息查询与修改的操作逻辑,涉及Controller、Service和Mapper层代码实现。最后探讨了配置文件的优化,对比@Value与@ConfigurationProperties注解,展示了如何通过实体类批量注入配置参数,提升代码可维护性与灵活性。
272 1
|
11月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
Web App开发 人工智能 自然语言处理
WebChat:开源的网页内容增强问答 AI 助手,基于 Chrome 扩展的最佳实践开发,支持自定义 API 和本地大模型
WebChat 是一个基于 Chrome 扩展开发的 AI 助手,能够帮助用户理解和分析当前网页的内容,支持自定义 API 和本地大模型。
1434 1
|
前端开发 机器人 测试技术
【RF案例】Web自动化测试弹窗处理
在进行Web自动化测试时,常会遇到不同类型的弹窗,如ajax、iframe、新窗口及alert/Confirm等。这些弹窗可通过Selenium进行定位与处理。其中,ajax弹窗直接定位处理;iframe需先选中再操作;新窗口类似iframe处理;而alert/Confirm则需特殊方法应对。在Robot Framework中,需先定义并获取窗口后使用特定关键字处理。此外,还有部分div弹窗需在消失前快速定位。希望本文能帮助大家更好地处理各类弹窗。
472 6
【RF案例】Web自动化测试弹窗处理
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`<select>` 和 `<option>`)、文本域(`<textarea>`)、标签解释(`<label>`)、各类按钮(`<button>`)及表单重置功能、无语义布局标签(`<div>` 和 `<span>`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
367 6
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
缓存 负载均衡 安全
后端开发的艺术:构建高效、可扩展的API
在现代软件开发中,后端开发扮演着至关重要的角色。它不仅负责处理数据存储、业务逻辑和安全性,还需要提供高效、可扩展的API供前端和其他服务使用。本文将深入探讨后端开发的关键概念和技术,帮助读者了解如何构建高效、可扩展的API,并提供一些实用的建议和最佳实践。
|
监控 安全 API
Docker + .NET API:简化部署和扩展
Docker + .NET API:简化部署和扩展
212 1
|
前端开发
【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】
本文档详细介绍了CSS中清除默认样式的方法,包括清除内外边距、列表项目符号等;探讨了外边距的合并与塌陷问题及其解决策略;讲解了行内元素垂直边距的处理技巧;并介绍了圆角与盒子阴影效果的实现方法。最后通过产品卡片和新闻列表两个综合案例,展示了所学知识的实际应用。
445 11