为了更好的REST接口 请像开发者一样思考

日期: 2012-07-05 作者:George Lawton翻译:张宣彬 来源:TechTarget中国 英文

企业组织需要思考,一个开发者在进行开发或RESTful的服务开发时的需求。这个过程中的一些最佳实践包括保持REST接口的简单和一致性,发生异常时提供良好的错误反馈。此外,企业组织还需要思考在应用程序接口(API)部署之后,维持服务水平协议(SLA)所需的基础设施。

  WSO2公司的技术使团副主席克里斯•哈达德(Chris Haddad,)说,将治理应用到RESTful的 应用程序接口(API)中,对于依赖于它们的业务流程来说是很重要的。

  一个托管的应用程序接口(API)需要使用SLA以一种安全的,已验证的,授权的和受保护的方式激活,以供使用。要管理好RESTful应用程序接口(API)面临着很多挑战。潜在的消费者可能不信任应用程序接口(API)的稳定性,可靠性或性能。API也存在安全隐患,可以导致不能发布和提供开放访问。

  RESTful应用程序接口(API)有两个治理水平。设计时间治理着眼于如何建立一种没有状态的资源,有一个支持安全的,面向资源的URL公约。运营治理着眼于应用程序接口(API)的平均与峰值吞吐量需求,以确保有保证的服务级别协议(SLA)。这种治理形式,着眼于消费的客户,以及所需的硬件和软件配置,以支持他们的需求。它也需要有一个系统来监测应用程序接口(API),这个系统应该具有这样的能力,当检测到故障时,通过手机短信或电子邮件通知管理者。

  哈达德建议,坚持使用HTTP协议,包括为RESTful服务所提供的GET,POST,PUT和DELETE方法。企业组织需要确保,这些方法实施起来没有副作用,或以意想不到的方式改变系统的状态。例如,PUT应该在恰当的地方更新资源。GET,HEAD,OPTIONS和TRACE方法则不应该修改任何东西。

  哈达德还建议使用状态图(SCXML),它为控制应用程序接口(API)提供了一个状态机符号,这种符号可以纳入到批准模型。SCXML得到各种工具的支持,包括IBMRational Software Architect(是一个专门面向端对端软件交付,应用设计、建模和开发工具软件),SCXMLgui,还有未来的WSO2 Carbon。

  保持简单

  在最近的一次网上直播中,Apigee公司的产品副总裁布赖恩•穆罗伊(Brian Mulloy)说,在应用程序顶部建立一个虚拟层是一个很好的开端,这样可以在任何逻辑下把开发人员隔离开。这使企业组织能够微调应用程序接口(API)的逻辑,这些变化不会给开发者造成负担。他强调了一些应用程序接口(API),比如Salesforce.com已经更新到第20版,它可能给开发者造成困惑。

  他还建议保持版本名称简单,参考用一个“v”后跟一个整数的形式。其中加入小数点版本号可能会导致开发者的焦虑,认为它可能会不断的更新。

  虽然在设计REST抽象原则的时候很容易迷失,更重要的是简化开发人员的周期。这包括减少访问服务所需的URI。Web应用程序可以广泛的使用POST,GET,PUT和DELETE命令来减少资源数量。

  由于习惯问题,穆罗伊还建议,资源应该被指定为名词,因为这些能更好地满足开发人员的期望和思想。然而,在提交算法的响应时,动词是非常有用的,比如货币转换的要求。

  穆罗伊还表明需要更多具体命名的资源。例如,他指出,英国广播公司(BBC)使用“项目”的高层次抽象概念,来向所有的不同的资源提出请求。它能激发开发者去看博客,新闻,报告和视频剪辑等资源的兴趣,因为这样能让编程变得更自然和简单.

  有效的REST接口错误报告是帮助开发者编写工作代码,和发现Web应用程序底层错误的一个重要方面。“错误是应用程序接口(API)可视性的关键部分之一,”穆罗伊说。开发者不仅在开发过程中要访问应用程序接口(API),它也将在程序外部部署之后帮助他们找到问题。

  穆罗伊建议应用程序接口(API)将错误信息转换成标准的HTTP错误代码。例如,Facebook返回没有任何额外注释的专制数字,这使人感到困惑不已。相比之下,Twilio把代码插入到HTTP状态代码中,并提供了更精细的错误消息。

  这种事前工作就减少了开发人员解析代码的时间。在生成代码更复杂的情况下,Twilio也提供了一个URL地址,将其信息传回开发者社区网站。这有助于为开发人员提供了一个论坛,更迅速地识别和纠正编程错误。

  RESTful服务的认证方式是各式各样的。一些网站如PayPal,已经开发了自己专有方法,穆罗伊建议企业采用OAUTH 2.0,从而简化开发人员在访问受限制服务时的工作。

  用更好的消息简化资源

  虽然在设计RESTful应用程序接口(API)时,常见的做法一直把重点放在更全面的URI上,迈克•阿蒙森,Layer 7公司的的首席应用程序接口(API)架构师认为把重点放在更好的消息上,而不是直接协议方式上更有意义。他写道,“事实证明,创建一个功能强大的API的关键,是在各方之间来回发送消息的设计。可靠和可扩展的API设计不是基于函数调用和共享对象,而是基于超媒体式的消息。”

  为了满足这一需要,为了解超媒体类型,阿蒙森已经致力于研究一个框架,使用一个名为H-Factors的概念。这些可用于创建一个具有灵活性,可用性和长寿的应用程序接口(API)的网页。在这种情况下,URI可以保持简单,并且可以通过扩展支持的消息类型添加新的功能。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 数字化转型:如何更好地利用API和微服务

    API,即应用程序编程接口,它提供给应用程序、开发人员访问其它应用的能力,而又无需访问源码,无需理解内部工作机制细节;简单地说,API就是实现应用与应用连接的一种隐形的桥梁。

  • 金融行业数字转型:利用API构建新IT基础

    从制造业、物流业,银行业到零售业,各行各业的根基都因应用经济的兴起发生着深刻的变革。在互联网和智能手机普及化的推动下,这种现象变得司空见惯。到2021年 ,蓬勃发展的全球应用经济的预估总值将达到6.3万亿美元,相比2016年的1.3万亿美元,增长近5倍。

  • 如何使用Azure API管理服务?

    在云和微服务架构时代,API是数字化业务的通用语言。根据分析公司Forrester Research预测,仅在美国,API管理工具的支出将在未来5年内达到近30亿美元。

  • 私有存储云如何构建?

    如何构建自己的私有存储云呢?在这之前,我们要先退后一步,思考一下云计算到底意味着什么。