小程序之API管理

 小程序在1月9日正式发布,小程序与微信、公众号绑定实现流量互转和更低的开发门槛,吸引了众多的开发者。小程序究竟是什么?我们先来看看小程序的结构:

![小程序代码]
(https://yqfile.alicdn.com/78391e108d5b135cc40145b61da7c15be16cf065.png)
![小程序代码结构分析]
(https://yqfile.alicdn.com/ae108106b5b4c0e55c446135e56ac6f9d3b3e203.png)

从小程序的代码结构来看,是由js、wxml(xml)、wxss(css)组成,全部为前端语言,也就是说想要开发小程序,只需要懂前端技术即可开发小程序。

然而,在实际的业务场景中,除了通过微信的API来实现些系统功能外,还需要一些自有的业务逻辑来满足用户的实际需求。因此,若要提供有价值的小程序,仍然需要进行后端业务逻辑的开发。

如,一个航班管理的小程序,需要实现航班信息、手机值机、机场进出港状况、票务查询等功能。
这需要开发者构建一个业务程序,小程序和业务程序通过API来通信。

说及API,那就必然要考虑API安全、API的管理、API运行情况的监控与分析等问题,可以使用阿里云API网关(API Gateway)来完成API的管理。

1 保护API安全

安全,对外开放服务永恒的话题,微信小程序也在安全方面做了不少工作,如:通过域名控制可以访问的url、必须使用https、禁止小程序内外链url、缓存加密存储、安全登陆等等严格的审核机制降低钓鱼风险等安全措施。

然而,安全控制基本是小程序的安全,并未提及后端业务程序的安全需要开发者自行处理。如:业务程序的防攻击、数据安全等问题。

这需要开发者自行预防业务程序:

  • API被恶意调用、SQL注入造成数据泄漏或者被爬库的风险;
  • 恶意高频调用,造成系统故障;

1.1 请求数据加密

一般使用HTTPS将请求进行数据加密,保证请求即使被恶意截获,也无法获取有价值的信息。

1.2 身份认证

身份认证是安全防护的第一步,让API请求都附带上身份信息是常见的防护手段,身份认证包含很多种,有HTTP Basic、API KEY/APP KEY、Oauth、openConnectid、JWK等方式。API网关支持一下2种认证方式:

1.2.1 API KEY/APP KEY

API KEY/APP KEY,是经过用户身份认证之后服务端给客户端分配一个调用API的API KEY/Secret、APP KEY/Secret,用户本地使用Secret对请求进行加密,一般客户端请求中会包含, API KEY/APP KEY、SignatureMethod、Timestamp、SignatureNonce、Signature

1.2.2 OpenID Connect

OpenID Connect 是一套基于 OAuth 2.0 协议的轻量级规范,提供通过 API 进行身份交互的框架。较 OAuth 而言, OpenID Connect 方式除了认证请求之外,还标明请求的用户身份。
API 网关依据 OpenConnect 的标准,对用户请求进行 Appkey+Token 校验,Token 由 API 提供者的系统颁发,网关颁发 Appkey,并负责 Appkey、Token 的真伪校验。

1.3 授权/鉴权

给API设置访问权限,重要数据只允许高级用户访问,不同用户的数数据相互隔离。这需要完成一个授权和鉴权机制。API网关提供了完整的授权和健全机制,控制API的开放范围。

1.4 防止SQL注入

对请求的预处理,在API设计时,对每个参数的类型、大小、格式取值范围等都有一个期望值,若用户请求不满足期望,则拒绝请求。

1.4.1 URL过滤

用户请求的URL或HTTP方法,不在开放的API列表,则拒绝。

1.4.2 取值范围校验

如请求入参的类型、大小、长度、枚举值。如:/user?age=[num],其中num为1-150,那么当用户请求为/user?age=151时,请求将被拒绝。

1.4.3 格式校验

则对于一些复杂参数,如Json或者有规则的字符串,进行格式校验,校验方法:正则、Json Schema。

1.5 流量控制

需要保持后端服务的稳定,而限制用户的访问频率。API网关支持API流控、用户流控和特殊流控;

API流控用于通道内的业务分层,API提供者可以根据后端服务能力和业务的重要程度来区分API,可分别设置不同的流量控制,以保证重要业务的延续性。

用户流控用于在API上的用户分层,API提供者可以为普通用户设置流量控制,防止用户间相互挤占资源。
特殊流控用于配置特殊用户的流控策略。

2 最小开发量支持小程序

小程序狂热背后应该思考,为什么要接入小程序,会给企业带来什么样的改变。所以一般企业不会直接摒弃之前的APP,只保留小程序。而是使用小程序来进行试水,来确认是否可以发展新的业务场景。所以,也不会为小程序搞特例的API,而是期望使用同APP公用同一套,甚至使用企业自身的OpenAPI

然而不同客户端要求的功能相同,但又存在细微差别,为避免重复开发,可以接入API网关。通过API网关的参数转换,将后端一个标准逻辑转化为满足不同客户端需求的API。支持参数位置的转换、参数名称的转换、参数值的转换,并支持常量参数。

3 考虑API迭代

无论正在构建什么,无论你在入手前做了多少计划,核心的应用总会发生变化,数据关系也会变化,资源上的属性也会被增加或删除。

API是服务端与客户端之间的一个公共契约。如API做了一个更改,并且无法向后兼容,那么就打破了这个契约,您的小程序就会发生故障。为了避免此类事件,你既要确保服务端的演变,保证小程序的可用性。必须在引入新版本API的同时保持旧版本API仍然可用。

API网关提供版本管理功能:您可以在API的URL中包含版本信息,或者是在请求头里面保持版本信息。但是实践证明在请求头里面包含版本信息远没有放在URL里面来的容易。

如果只是简单的增加一个新的特性到API上,如资源上的一个新属性或者增加一个新的端点,并不需要增加API版本。因为这些并不会造成向后兼容性的问题,小程序支持新功能即可。

4 借力给力

在小程序上提供更多相关的功能,可以增加用户粘性。但大多企业由于开发资源紧张,略显局促,可以使用阿里云API市场来满足更多的用户需要。以更少的系统代码完成更多的功能,而真正价值在于可以让开发人员有更多时间解决自身领域独有的问题,这要比重复构建别人已经实施的功能有意义得多。

在API市场上的每个API,在上线前都做过严格的审核,不用担心服务质量,可以放心选购。

5 低成本支持小程序

因此,通过API网关您甚至不需要后端业务逻辑的开发,而只是在API网关进行API的简单定义,既可以为您的小程序提供一个安全稳定的后端服务。也可以通过API市场,来购买其他公司已经成熟的API服务(功能)。低成本支撑小程序的运行。

<待续...>

时间: 2024-11-05 16:41:31

小程序之API管理的相关文章

小程序弹性Web之旅

前言 最近半个月小程序着实火了一把,各类小程序遍地开花.虽然目前各方对小程序意见不一,但就使用体验而言,小程序的确比公众号.服务号好上一些,相信会有更多人选择以小程序方式为自己的用户提供服务. 本文主要介绍如何利用阿里云现有产品打造经济适用型小程序服务端.适合小程序开发者.提供小程序开发服务的供应商参考作为解决方案之一.本文涉及的产品为弹性Web托管及API网关. 小程序解析 我们先来看一下典型的小程序结构.小程序一般由客户端和服务端组成,小程序客户端在微信移动端应用中运行.按照小程序官方开发文

支付宝小程序正式上线公测 附开发者工具和开发文档

支付宝小程序正式进入公测阶段,开发者可以申请公测了.支付宝小程序是一种全新的开放模式,它运行在支付宝客户端,可以被便捷地获取和传播,为终端用户提供更优的用户体验.小程序开放给开发者更多的JSAPI和OpenAPI能力,通过小程序可以为用户提供多样化便捷服务.公测申请地址:https://openhome.alipay.com/platform/miniBeta.htm 支付宝小程序特色能力 1.支付能力.满足商户各商业经营场景的支付需求2.信用能力.为商户高效识别用户的真实.靠谱性3.大数据能力

你能用微信小程序打开小程序了【附开发方法】

6月21日晚间,微信小程序再次迎来升级:小程序可以打开小程序了,同一个公众号下关联的10个同主体小程序和3个非同主体小程序之间,可以调用接口直接相互跳转.微信客户端6.5.9及以上版本支持.另外门店小程序的门店页支持添加视频:为了方便宣传门店形象,门店小程序的门店页支持可添加视频.(添加视频方式有两种:1.上传视频至公众号素材库添加.2.输入视频链接或含视频的图文消息链接添加.)门店小程序支持接口管理,提供创建商家,新增.查询.修改和删除门店等接口,同时支持第三方平台授权调用,方便批量管理门店.

微信小程序之页面路由

路由方式 简介 对于路由的触发方式以及页面生命周期函数如下: 路由方式 触发时机 路由前页面 路由后页面 初始化 小程序打开的第一个页面   onLoad, onSHow 打开新页面 调用 API wx.navigateTo 或使用组件 <navigator open-type="navigateTo"/> onHide onLoad, onShow 页面重定向 调用 API wx.redirectTo 或使用组件 <navigator open-type="

撸了一个微信小程序项目

学会一项开发技能最快的步骤就是:准备,开火,瞄准.最慢的就是:准备,瞄准,瞄准,瞄准-- 因为微信小程序比较简单,直接开撸就行,千万别瞄准. 于是乎,趁着今天上午空气质量不错,撸了一个小程序,放在了男性交友网站上了, 我添加了很全的注释,大家赏个star. 地址:https://github.com/yll2wcf/wechat-weapp-lifeTools 功能介绍 功能比较简单,调用了百度ApiStore的接口即时查询空气质量. 我计划多加一些功能,争取把微信小程序提供的功能全用一遍. 也

移动开发之微信小程序——资料集合

本文转载自:知乎 有需要下载的客官可可以点击知乎去下载相关资料 一:官方地址集合:1:官方工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=14764346775993:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index

【小程序】微信小程序的个人开发者发布最佳实践

前言 微信小程序在3月27日新增了6项能力,其中第一条就是对个人开发者开放注册. 这无疑是大快人心的好事! 之前我写过一篇微信小程序的文章,不过主体是企业的身份来做的,并且也没有走到发布的流程, http://blog.csdn.net/diandianxiyu_geek/article/details/53068012 这次可以完美的走完这套流程了~ 注册账户 和之前的一样,只是我们选择的是新增个人身份. 选择小程序 填写注册邮箱 注意的是,小程序帐号和公众号是平级的身份,所以不能用同一个邮箱

《微信小程序开发入门精要》——第1章,第1.6节开发第一个微信小程序

1.6 开发第一个微信小程序 本节将从零开始开发一款微信小程序.该程序是一个猜拳游戏,功能很简单,单击"开始"按钮后,会快速切换"锤子""剪刀"和"布",直到按"停止"按钮,会显示"锤子""剪刀"和"布"中的一个,该游戏可以实现双方或多方猜拳.本节的目的是通过该例子,将开发微信小程序的过程完整讲述一遍,从配置开发环境.建立小程序项目,一直到将微信小

《微信小程序开发入门精要》——第1章,第1.3节注册小程序账号

1.3 注册小程序账号在开发小程序之前,需要注册一个小程序账号,并用与账号绑定的手机微信扫描开发工具的二维码才能登录开发小程序的IDE(将在1.4节介绍).首先进入如下地址的页面.https://mp.weixin.qq.com 如果已经用微信公众号登录,请注销.然后单击右上角"立即注册"链接,进入注册页面.该页面有如图1-1所示的4个注册选项,分别是订阅号.服务号.小程序和企业号. ▲图1-1 注册类型 也就是说,这4个注册类型需要使用4个不同的账号,如果读者已经有了订阅号或其他账号