阿里API网关使用总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里API网关使用总结相关的知识,希望对你有一定的参考价值。
参考技术AAPI网关 API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简单的操作,即可快速、低成本、低风险地开放数据或服务。
利用API网关你可以提高自己公司API安全性,也可以上架到API云市场,供用户购买和使用。
这个没什么可说的,主要是你要想办法尽可能安全地存储你的AppKey和AppSecrect。
所属分组是API的基本属性,所以需要先创建分组,再在分组下创建API。每个账号默认最多可创建100个分组,如需更多分组需要提交工单。分组有所属区域(Region)的概念,比如华东上海区,选择之后就不能修改了。创建完分组之后,系统会给该分组分配一个二级域名,供测试使用,不过,每个二级域名每天最多可访问1000次。
如果你的API支持HTTPS协议,还需要为该独立域名上传 SSL 证书。我们需要把我们的域名解析到该分组上,之后才能绑定到该分组上。绑定的域名需要现在阿里云系统备案。绑定域名之后,该分组下的API就可以通过该域名来访问了,不再需要调用系统分配的二级域名了。
在API分组的环境管理中,你可以自定义环境变量,同一个变量可以再在线上、预发和测试三个环境下对应不同的值,这样在API的定义中就可以使用这里定义好的环境变量了。可以在Path、入参默认值和后端服务服务地址中加入环境变量,在API的定义中使用环境变量需要以 #变量名# 的方式使用。 如果要修改已发布的API用到的环境变量,先把老的环境变量给删掉,再重新定义一个新的同名环境变量赋上新值之后再把全部对应的API重新发布一遍,这个是异步生效的,一般发布后1分钟内生效。
这里的内容还是蛮多的,包括基本配置,前端和后端地址,请求参数配置等,详细文档可以看阿里API的官方文档,这里说几点重要的:
创建好API之后,就可以对应用进行授权了,点击API的“授权”就可以在指定环境下授权某个APP可以访问该API了,如果你在调用API的过程中控制台打印了x-ca-message中包含了Unauthorized错误,你应该想到你的API还未对该APP进行授权访问。
API编辑完成之后就可以发布到指定环境上去了,发布之后就立马生效了。可以多次编辑然后发布到不同的环境下,如果你编辑完了忘记发布到指定环境下了,是不会生效的。在分组API列表下,直接点击API名字进入的是当前API最后一次编辑保存的状态,不一定跟发布的状态一直哦。点击API右边的线上、预发或测试后面的"运行中"可以看到在该环境下最后一次编辑发布后的状态哦。
网关会在请求的时候加上日期、时间戳、nonce、userAgent、Host、AppKey、version等参数值,如果是POST请求的话,需要对参数值进行urlEncode。如果有body值的话,需要对body值,将body中的内容MD5算法加密后再采用BASE64方法Encode成字符串,放入HTTP头中。最后再通过将httpMethod、headers、path、queryParam、formParam经过一系列的运算,合成一个字符串用hmacSha256算法双向加密进行签名。
在我们分组上绑定好了域名之后,我们不管是预发还是线上环境都可以通过这同一个域名进行访问,那网关是怎么帮我们区分环境的呢?这个时候就用到上面的环境变量管理了,我们通过在环境变量中定义一个变量在不同环境下不同的值达到区分环境的效果。在网络请求的时候,我们可以在头部指定 X-Ca-Stage 参数值来让网关帮我们转发到对应环境的后端服务上,对应的值分别是:线上(RELEASE)默认、预发(PRE)和测试(TEST)。
这里重点说一下参数位置下可选的Body选项,这个地方坑了我们蛮久。我们知道在我们客户端发起POST请求时,我们会在头部指定“Content-Type”为“application/x-www-form-urlencoded”,然后把请求的参数组装成"key1=value1&key2=value2"的字符串,然后在编码成二进制,放在请求的Body里,以Form表单的形式提交的。所以呢,我们在定义API的参数时,应该把参数位置选择为Body选项。但是我们在很长一段时间里,创建API时或编辑API时,参数位置处下拉一直没有Body选项,我们就把参数定义成了Query类型的了。在使用时也没有啥问题,但是一旦当我们的参数值非常长时,比如一个json字符串,这个是就报错了“414 Request-URI Too Large”,这个时候呢,网关就不会再帮我们把请求转发到服务端了。排查了很久终于找到了罪魁祸首在这里等着呢,通过把参数位置改成Body就可以了。这个可能是阿里API网关前端页面上的一个bug,有时候根本选不到Body选项,这个时候你可以先把“请求Body(非Form表单数据,比如JSON字符串、文件二进制数据等)”选项给勾选上,然后再取消勾选,再下拉展开“参数位置”就可以看到Body选项了。(该文发布时是如此,我已经将该问题反馈给阿里API网关,可能后面会修复该bug。)
另外一个问题是如果你的参数值中包含了emoji表情,需要对参数值进行urlEncode,服务端在收到请求时需要对参数值进行urlDecode。否则用的过程中会出现各种奇怪的问题。问了阿里网关的服务人员,他们的解释是,如果不进行urlEncode,参数在传到网关时可能会丢失。可以对所有Post请求的参数值统一urlEncode,服务端对收到的参数值统一进行urlDecode。
在使用网关时,timestamp和nonce这两个header参数值是可选的,如果加上这两个值,网关层会对请求进行校验,防止重放攻击。不过有个问题:在当前时间的前后15分钟的时间戳都是可以的,一旦超过15分钟就会请求失败,所以,如果用户修改了客户端的系统时间的话,API就会调不通了。这个校验有点严格,如果不知道这一点的话,用户反馈客户端不能用,而你这里测试又没有任何问题,那就泪奔了,哈哈。当然这个是可选的校验,如果不传这两个值的话,就不会校验,这个时候防重放攻击的工作就需要我们自己的服务端做了。
目前网关不支持multipart形式的上传,所以一般我们的上传API不太适合录入网关,阿里的说法是现在大家的做法普遍是先将文件上传到文件服务器,然后通过调用接口把文件地址等信息报错到服务器的方式,所以,目测以后也不大可能支持定义multipart形式的上传API。
每个 API 分组的默认流控上限是500QPS,如果你要调大QPS,需要提交工单并支付相应费用。另外网关有个“流量控制策略”的功能,它是针对API的,也就是说定好策略之后,选中对哪些API生效,这些API就会单独的受这个流量控制策略的控制。但是,需要注意的是,如果你要调大流量控制策略,也必须先调大API所在分组的QPS才会生效,否则流量控制策略可以创建但不会实际生效。
虽然我们可以在分组的环境管理中添加不同的环境变量来实现同一个API分组下可以定义不同服务域名的API,这样我们客户端在发起请求的时候,域名只需要配一个就可以了,非常方便。但是,一旦网关这一层瘫痪(尽管是小概率事件,但不排除),这个时候我们就心有余而力不足了,只能等网关尽快恢复了。如果我们一个分组对应一个我们真正的服务域名的话,一旦网关出问题,我们可以快速把该分组绑定的域名指向我们真正的该分组的服务上。
浅析阿里云API网关的产品架构和常见应用场景
自上世纪60年代计算机网络发展开始,API(Application Programming Interface )随之诞生,API即应用程序接口,是实现系统间衔接的桥梁。时至今日,API市场已经形成了一个庞大的生态体系,在拥抱API经济的过程当中,API网关这一个组件起到了至关重要的作用。
什么是API网关
API 网关提供完整的 API 托管服务,辅助用户将能力、服务、数据以 API 的形式开放给合作伙伴,也可以发布到 API 市场供更多的开发者采购使用。
1、提供防攻击、防重放、请求加密、身份认证、权限管理、流量控制等多重手段保证 API 安全,降低 API 开放风险。
2、提供 API 定义、测试、发布、下线等全生命周期管理,并生成 SDK、API 说明文档,提升 API 管理、迭代的效率。
3、提供便捷的监控、报警、分析、API 市场等运维、运营工具,降低 API 运营、维护成本。
API网关技术解读稿(改)713.png
API托管服务: 为企业与开发者提供低成本、高可用、安全、便捷、易于管理的 API 开发能力。在 API 的市场里,日均调用次数已经超过1.2亿次,基于此背景,阿里云全新探索了云市场能力中心,建立 API 生态,为企业客户和伙伴提供 API 购买和 API 变现一站式解决方案。API 网关将能力的复用率最大化,让企业之间能够互相借力,企业发展能够专注自身业务,实现共赢。
API网关产品架构
API网关技术解读稿(改)1017.png
API网关可以实现:
1、API 生命周期管理
● 支持包括 API 发布、API 测试、API 下线等生命周期管理功能。
● 支持 API 日常管理、API 版本管理、API 快速回滚等维护功能。
2、全面的安全防护
● 支持多种认证方式,支持 HMAC (SHA-1,SHA-256) 算法签名。
● 支持 HTTPS 协议,支持 SSL 加密。
● 防攻击、防注入、请求防重放、请求防篡改。
3、灵活的权限控制
● 用户以 APP 作为请求 API 的身份,网关支持针对 APP 的权限控制。
● 只有已经获得授权的 APP 才能请求相应的 API。
● API 提供者可以主动授权某个 APP 调用某个 API 的权限。
● API 若上架到 API 市场,则购买者可以将已购买的 API 授权给自己的 APP。
4、精准的流量控制
● 流量控制可以用于管控 API的被访问频率、APP的请求频率、用户的请求频率。
● 流量控制的时间单位可以是分钟、小时、天。
● 同时支持流控例外,允许设置特殊的 APP 或者用户。
5、请求校验
● 支持参数类型、参数值(范围、枚举、正则、Json Schema)校验,无效校验直接会被 API 网关拒绝,减少无效请求对后端造成的资源浪费,大大降低后端服务的处理成本。
6、数据转换
● 通过配置映射规则,实现前、后端数据翻译。
● 支持前端请求的数据转换。
● 支持返回结果的数据转换。
7、监控报警
● 提供可视化的API实时监控,包括:调用量、流量大小、响应时间、错误率,在陆续增加维度。
● 支持历史情况查询,以便统筹分析。
● 可配置预警方式(短信、Email),订阅预警信息,以便实时掌握API运行情况。
8、自动工具
● 自动生成 API 文档,可供在线查看。
● API 网关提供多种语言 SDK 的示例。降低 API 的运维成本。
● 提供可视化的界面调试工具,快速测试,快速上线。
9、API市场
● 可将 API 上架到 API 市场,供更多开发者采购和使用。
API网关提供完善的、对开发者友好的API管理方式,用户不仅可以用控制台来管理API,还可以和已有的系统做连接。对于API网关来讲,目前有两种使用方式:
1、共享实例
免费开通,只需要为调用所产生的次数和流量支付费用,但是因为共享实例,很多的多租户会在一个实例上,相对来讲安全性和稳定性不如专享实例来的高。
2、专享实例
当客户的业务到了一定的规模或者是对安全性和稳定性有更高需求的时候,可以在控制台上买一个专享实例。购买之后,系统会自动提供一个独立的入口IP,独享服务器集群。专享实例能够满足更高SLA的需求,将分组切换至专享实例后,就能享受更高规格的服务,并且只需在控制台上自主操作即可。
API常见应用场景
API 网关能够支撑各个场景下开放 API 的需求,支持将 API 开放给合作伙伴、开发者,实现企业核心能力的货币化,建立 API 生态;支持将 API 适配多端,如:移动、互联网、物联,实现系统前后端分离;支持内部系统整合模块化、微服务化。
1、建立 API 生态,互相借力,协同发展
面对用户日益膨胀而又碎片化的需求,企业需要不断探索新的商业模式,来解决客户一系列的场景化问题。通过API网关提供标准的 API 服务,让其他开发者将不同 API 服务组合整合到自己的应用中,衍生出新的服务,促进企业建立商业生态、跨界创新。
● 通过 API 网关将企业的核心能力,开放给合作伙伴,达成深度合作,协同发展;
● 将 API 接入阿里云市场,以 API 的形式开放能力、服务、数据供广大开发者采购使用,产生价值;
● 在 API 市场,采购第三方成熟的能力和服务,避免平铺式开发,专注专业,借力发展。
API网关技术解读稿(改)2648.png
2、安全的实现多端统一,一套服务,多端输出
随着移动、物联网的普及,API 需要支持更多的终端设备,以扩充业务规模,但同时也带来系统复杂性的提升。通过 API 网关可以使 API 适配多端,企业只需要在 API 网关调整 API 定义,无需做额外工作。
● 企业只需维护一个服务体系,面向多端输出,只需调整API定义,即可实现对APP、设备、web端等多种终端的支持;
● 避免多个场景多套API,大大降低管理运维成本。
API网关技术解读稿(改)2863.png
3、轻松实现系统集成,规范化、标准化
● 通过 API 网关对系统间接口进行规范统一,用标准化的接口实现系统集成;
● 快速完成资源整合和管理,消除快速发展造成的冗余和浪费,聚力发展业务。
API网关技术解读稿(改)2963.png
总结
阿里云 API 网关, 提供 API 托管服务, 涵盖 API 设计、发布、售卖全生命周期,辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成。未来,API 网关也将结合阿里云A集市, 不断提升 API 体验,实现一站式 API 采购、变现解决方案。
本文为云栖社区原创内容,未经允许不得转载。
自上世纪60年代计算机网络发展开始,API(Application Programming Interface )随之诞生,API即应用程序接口,是实现系统间衔接的桥梁。时至今日,API市场已经形成了一个庞大的生态体系,在拥抱API经济的过程当中,API网关这一个组件起到了至关重要的作用。
什么是API网关
API 网关提供完整的 API 托管服务,辅助用户将能力、服务、数据以 API 的形式开放给合作伙伴,也可以发布到 API 市场供更多的开发者采购使用。
1、提供防攻击、防重放、请求加密、身份认证、权限管理、流量控制等多重手段保证 API 安全,降低 API 开放风险。
2、提供 API 定义、测试、发布、下线等全生命周期管理,并生成 SDK、API 说明文档,提升 API 管理、迭代的效率。
3、提供便捷的监控、报警、分析、API 市场等运维、运营工具,降低 API 运营、维护成本。
API托管服务: 为企业与开发者提供低成本、高可用、安全、便捷、易于管理的 API 开发能力。在 API 的市场里,日均调用次数已经超过1.2亿次,基于此背景,阿里云全新探索了云市场能力中心,建立 API 生态,为企业客户和伙伴提供 API 购买和 API 变现一站式解决方案。API 网关将能力的复用率最大化,让企业之间能够互相借力,企业发展能够专注自身业务,实现共赢。
API网关产品架构
API网关可以实现:
1、API 生命周期管理
● 支持包括 API 发布、API 测试、API 下线等生命周期管理功能。
● 支持 API 日常管理、API 版本管理、API 快速回滚等维护功能。
2、全面的安全防护
● 支持多种认证方式,支持 HMAC (SHA-1,SHA-256) 算法签名。
● 支持 HTTPS 协议,支持 SSL 加密。
● 防攻击、防注入、请求防重放、请求防篡改。
3、灵活的权限控制
● 用户以 APP 作为请求 API 的身份,网关支持针对 APP 的权限控制。
● 只有已经获得授权的 APP 才能请求相应的 API。
● API 提供者可以主动授权某个 APP 调用某个 API 的权限。
● API 若上架到 API 市场,则购买者可以将已购买的 API 授权给自己的 APP。
4、精准的流量控制
● 流量控制可以用于管控 API的被访问频率、APP的请求频率、用户的请求频率。
● 流量控制的时间单位可以是分钟、小时、天。
● 同时支持流控例外,允许设置特殊的 APP 或者用户。
5、请求校验
● 支持参数类型、参数值(范围、枚举、正则、Json Schema)校验,无效校验直接会被 API 网关拒绝,减少无效请求对后端造成的资源浪费,大大降低后端服务的处理成本。
6、数据转换
● 通过配置映射规则,实现前、后端数据翻译。
● 支持前端请求的数据转换。
● 支持返回结果的数据转换。
7、监控报警
● 提供可视化的API实时监控,包括:调用量、流量大小、响应时间、错误率,在陆续增加维度。
● 支持历史情况查询,以便统筹分析。
● 可配置预警方式(短信、Email),订阅预警信息,以便实时掌握API运行情况。
8、自动工具
● 自动生成 API 文档,可供在线查看。
● API 网关提供多种语言 SDK 的示例。降低 API 的运维成本。
● 提供可视化的界面调试工具,快速测试,快速上线。
9、API市场
● 可将 API 上架到 API 市场,供更多开发者采购和使用。
API网关提供完善的、对开发者友好的API管理方式,用户不仅可以用控制台来管理API,还可以和已有的系统做连接。对于API网关来讲,目前有两种使用方式:
1、共享实例
免费开通,只需要为调用所产生的次数和流量支付费用,但是因为共享实例,很多的多租户会在一个实例上,相对来讲安全性和稳定性不如专享实例来的高。
2、专享实例
当客户的业务到了一定的规模或者是对安全性和稳定性有更高需求的时候,可以在控制台上买一个专享实例。购买之后,系统会自动提供一个独立的入口IP,独享服务器集群。专享实例能够满足更高SLA的需求,将分组切换至专享实例后,就能享受更高规格的服务,并且只需在控制台上自主操作即可。
API常见应用场景
API 网关能够支撑各个场景下开放 API 的需求,支持将 API 开放给合作伙伴、开发者,实现企业核心能力的货币化,建立 API 生态;支持将 API 适配多端,如:移动、互联网、物联,实现系统前后端分离;支持内部系统整合模块化、微服务化。
1、建立 API 生态,互相借力,协同发展
面对用户日益膨胀而又碎片化的需求,企业需要不断探索新的商业模式,来解决客户一系列的场景化问题。通过API网关提供标准的 API 服务,让其他开发者将不同 API 服务组合整合到自己的应用中,衍生出新的服务,促进企业建立商业生态、跨界创新。
● 通过 API 网关将企业的核心能力,开放给合作伙伴,达成深度合作,协同发展;
● 将 API 接入阿里云市场,以 API 的形式开放能力、服务、数据供广大开发者采购使用,产生价值;
● 在 API 市场,采购第三方成熟的能力和服务,避免平铺式开发,专注专业,借力发展。
2、安全的实现多端统一,一套服务,多端输出
随着移动、物联网的普及,API 需要支持更多的终端设备,以扩充业务规模,但同时也带来系统复杂性的提升。通过 API 网关可以使 API 适配多端,企业只需要在 API 网关调整 API 定义,无需做额外工作。
● 企业只需维护一个服务体系,面向多端输出,只需调整API定义,即可实现对APP、设备、web端等多种终端的支持;
● 避免多个场景多套API,大大降低管理运维成本。
3、轻松实现系统集成,规范化、标准化
● 通过 API 网关对系统间接口进行规范统一,用标准化的接口实现系统集成;
● 快速完成资源整合和管理,消除快速发展造成的冗余和浪费,聚力发展业务。
总结
阿里云 API 网关, 提供 API 托管服务, 涵盖 API 设计、发布、售卖全生命周期,辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成。未来,API 网关也将结合阿里云A集市, 不断提升 API 体验,实现一站式 API 采购、变现解决方案。
以上是关于阿里API网关使用总结的主要内容,如果未能解决你的问题,请参考以下文章