下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于开发云API连接器最佳实践分享

作者:课课家教育     来源: http://www.kokojia.com点击数:688发布时间: 2017-11-08 14:00:33

标签: 云计算api技术

  欢迎各位阅读本篇文章,本篇文章讲述了关于开发云API连接器最佳实践分享,课课家教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!

关于开发云API连接器最佳实践分享_云计算_api_技术_课课家教育

  各家云服务提供商,例如亚马逊Web Services、微软Azure、谷歌Compute Engine等,及其OpenStack平台、vCloud、OnApp等都越来越多地实现了通过APIs或web services的可编程服务。为了调用这些APIs和web services,我们必然需要开发出一个连接器(connector)。现如今,我们已经积累了对几乎所有的云平台或服务进行API连接器的开发经验。本博文旨在分享我们的经验,并提供一些开发web service连接器用以连接到云服务或平台所需要遵循的最佳实践。

  为什么需要API连接器

  如下是要用到API连接器的几个原因:

  1.发现云资源

  2.管理资源

  3.自动化操作

  4.协调资源

  5.与工具和产品集成

  6.报告总结资源及其利用

  开发API连接器的步骤

  下面是针对云平台/服务开发出高效和实用的连接器所需的步骤顺序:

  1.理解API特性

  2.分析云平台/服务所提供的API支持

  3.识别API的各种操作

  4.验证API的各个端点

  5.验证API的授权

  6.检查配额

  7.分析云资源的定价

  8.设计考虑API连接器

  API特性

  API的特性包括API的类型、认证机制和请求/响应的类型。

  API类型

  通常情况下,APIs是通过REST(即,表述性状态传递 Representational State Transfer)或SOAP(即,简单对象访问协议 Simple Object Access Protocol)发布的。其中,REST正在成为标准,并取代旧的SOAP APIs。这一点可以通过文末表格中的数据予以充分证明。

  API认证

  每个云平台都使用不同类型的认证机制来访问APIs,因此理解这些认证机制是非常重要的。一些典型的例子会包括如下部分:

  ·基本认证

  ·基于令牌的认证

  ·SSL认证

  ·多因素认证

  基本认证

  基本认证使用的是以base64编码的用户名和密码的经典组合,并在HTTP头部的授权中提供。

  例子: Authorization:Base64(username:password)

  请求:

  Headers: Content-type: application/xml

  Authorization: Basic dG9ib3RyYXM6cTE=

  Method: GET

  API: http://api.xyzcloud.com:4465/paci/v1.0/ve

  IPaddress | host - api.xyzcloud.com

  PortNo – 4465

  Path – paci/v1.0/ve

  基于令牌的认证(X-Auth-Token,Oauth令牌)

  基于令牌的认证提供了使用包含用户身份信息的临时令牌来进行认证。当临时令牌到期的时候,它需要被资源进行刷新。内部认证处理器基于头部所提供的令牌信息进行验证。

内部认证处理器基于头部所提供的令牌信息进行验证。

  Request:

  Headers: Content-type : application/json

  Method: POST

  API: https://api.myapplication.com/user/accessToken

  内容:

  {

  userName:'my username',

  password:'my password',

  token_type:'mac'

  }

  响应:

  {

  “access_token”: “okKXxMWOEhnM78Rie02ZjWjP7eQqpp6V”,

  “mac_key”:”vV6xEfVgQZv4ABJ6VZDHlQfCaqKgFZuN”,

  “mac_algorithm”:”hmac-sha-1”,

  “token-type”:”mac”,

  “expires_in”:3600,

  “refresh_token”:”nZSiH3L5K4febMlELguILucrWpjRud56”

  }

  SSL认证

  安全套接字层是一种标准的安全技术,它在服务器和客户机,典型场景是web服务器(网站)与浏览器之间建立了一个加密的连接。SSL认证需要将SSL证书上载到订阅它的平台之上。而API的端点则需要通过SSL证书来进行身份认证。

  多因素认证

  多因素认证(Multi-factor authentication MFA)在用户名和密码之上增加了一层保护。支持MFA的APIs需要把用户名和密码作为第一因素;而把从MFA设备上获取的认证代码作为第二个因素。这些多因素为API的端点提供了更高的安全性。

  API响应类型

  在提供输入和使用输出的时候,请求和响应类型的API需要被进行查看。API的请求和响应都是XML或JSON类型的,因此连接器需要根据它的接口需求来转换其相应的响应。

  API的支持

  可以通过以下选项来开发云平台/服务的API连接器。

  ·使用你所选用的编程语言,例如:Pythonjava、.Net、Ruby、GO、Node.JS等来直接调用REST和SOAP的API。

  ·一些云平台/服务提供各种针对API的软件开发工具包(SDKs),以方便开发人员使用由平台/服务所提供的可编程的SDKs,例如特定的Python、Java、.Net、Ruby等

  ·使用第三方的库,例如基于他们支持的LibCloud(Python)、Fog (Ruby)、jCloud (Java)、Libretto (JavaScript)、pkgcloud (Node.JS)或是gophercloud (GO)。

  下表显示了一些针对各大领先的云服务提供商和平台的API支持。

下表显示了一些针对各大领先的云服务提供商和平台的API支持。

  注意:这些云服务API的细节可以在谷歌表格(Google Sheets)中找到。而且它鼓励服务提供商和其他的读者去更新他们自己的各种云API端点,从而为开发人员的提供更为方便的参考。

  API的各种操作

  通过浏览API文档以识别你想要调用的操作,这样有助于你去了解本平台所支持的各种API操作。在开始通过API进行调用之前,你最好是通过管理门户网站或是仪表盘界面来执行各种操作,以便你能够了解它是如何工作的。要调用API,你首先要做的是认证,然后在执行各种创建选项之前,你可以尝试一些基本的读取操作。

  验证API的各个端点

  API端点与云平台管理的URL并不相同。一个API端点通常包括主机、端口和路径。如果是REST API的话,它会包括一个访问的密钥和一个私钥。可以运用诸如POSTMAN、RESTClient等工具来为平台或服务验证API各个端点的可访问性。而对于一个基于令牌的认证,我们则需要生成令牌,并将该令牌提供给RESTClient。

  API的授权

  在对API进行认证之后,我们需要了解云平台或服务中的给定用户的授权问题。例如,通过使用AWS身份和访问管理(Identity and Access Management IAM),我们可能在成功认证之后,也只能执行那些被IAM所授权给我们的操作。

  配额

  云平台/服务对于可由用户帐户调用的资源实施配额管理。因此你最好是事先了解一下配额限制的机制。例如,AWS对单个账户的弹性IP地址(elastic IP)的分配就限制为5个。但是,这是可以通过提出请求来进行增加的。而OpenStack的管理员则可以在用户使用的每个项目中定义资源的限制。

  分析云资源的定价

  检查云服务提供商的资源定价是非常重要的。由于云服务提供商是按每月、每小时或每分钟进行收费的,因此在消费前了解定价是很重要的,否则我们在收到账单时肯定会有所“惊喜”的。同样重要的是要详细了解服务提供商所能提供的免费层级,这也会让我们避免那些所谓的“惊喜”。

  设计考虑API连接器的开发

  •如果你只为单个平台开发一个连接器的话,使用该平台所提供的SDKs乃是理想选择。

  •如果平台并不提供所需语言的SDK,你可以用到诸如APIMatic、AWS API Gateway等工具,它们能够为API端点生成各种SDKs。在连接器的开发过程中,使用SDKs将会减少许多开发的工作量。

  •如果你想开发跨多个云的连接器,你可以考虑使用第三方的SDKs,这将有助于加速你的开发速度。然而,如果你希望连接器是动态的,而且它能够随着平台或服务进行迭代的话,最好是使用平台或服务所提供的SDK,因为第三方SDK对一些新版本的支持可能会需要一段滞后的时间。

  •你需要理解由一些提供商和平台所设置的API流量限制(即单个用户在一段时间内对API端点所产生的API请求的数量),因为它将是我们能够调用单个端点的一个给定阀值。

  •对于一些异步的APIs(那些并非及时响应的API),请使用PUSH来提供响应或用POLL来接收。“Push”模式用到一个回调类型的端点,当它在可用时会发送一个响应。而在“POLL”模式里,请求反复调用一个API来检查其状态的更新情况。当你需要轮询或重试API请求时,我们建议使用一个指数型的回退算法(backoff algorithm)来计算API调用之间的休眠间隔(sleep interval)。而指数型回退算法背后的思想就是在各个连续错误响应的重试之间,使用递增的等待时间。

  •一些云服务提供商/平台会为每个服务的调用发布不同的端点。因此我们建议你维护一个包含多个API端点的服务目录,以确保你在使用过程中能调用到那些正确的服务。

  •有时各个端点会根据云平台或服务的子账户的不同而有所区别。因此你需要确保在调用之前,各个端点能够根据不同的需求被“串联”起来。

  希望上述最佳实践能对你有所帮助,能让你愉快的开发出API连接器。

  干货:云管理

  云API:减少70%服务器端编码工作量

  为app开发者提供云端的api服务和数据存储服务,自动生成RESTfulAPI,支持在线NoSQL数据表设计、API调试及用量分析;同时提供推送(push)、云修复、大数据分析等服务,极大的简化了服务器端开发工作。APICloud的“云API”具有典型的“云”特性和“大数据”特性。

  1. 云端设计数据库

  为APP开发者提供云端NoSQL数据表设计,支持多大10种数据类型,简单配置即可完美实现APP“云与端”的数据连通;无需开发者手动编码封装,APICloud即可根据数据表设计自动生成RESTFUL API,最大程度减少服务器端开发工作量;预置常用云端功能模块,内置用户系统、角色系统、文件系统、权限控制等,开发者几行代码即可实现快速集成。

  2. 云修复能力

  通过云修复可实现App内快速回滚,让APP拥有自我修复能力,在APP内部快速回滚的过程中,支持断点续传,全面保障APP自我修复的完整性。

  3. 灵活的推送机制

  结合APP中的标签设置,可针对不同属性的用户进行差异化推送;可通过定时推送功能实现全程自动化推送;支持离线app上线后第一时间推送以及推送失败后的再次推送;支持双向推送IM功能。

  4. 多维度的版本管理

  支持IOS及Android多平台的版本同步或异步管理,在控制台内流程化进行开发和版本管理,让版本概念更清晰;通过增量更新,可在应用内进行更新,无需重新提交AppStore,让APP的版本迭代更高效;一键关闭失效或含有重大bug的版本,可以快速的让用户跳过该版本的升级,或强制此版本用户进行升级,让版本管理更轻松。

  5. 强大的统计管理

  APP最新的新增及活跃用户数据,几分钟后即可摆在开发者眼前,让开发者成为自己APP的运营专家。通过在APP中自定义的事件ID,来帮助开发者了解用户在APP中的特定行为数据,支持版本、终端的分布查询及错误报告。

  小结:相信最后大家阅读完毕本篇文章,肯定学到了不少知识吧?其实大家私下还得多多自学,当然如果大家还想了解更多方面的详细内容的话呢,不妨关注课课家教育平台,在这里你肯定会有意想不到的收获的!

赞(17)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程