RESTful API设计给开发人员带来怎样的未来?

业界正在逐渐承认RESTful API优于面向服务架构。但是这对于架构师和开发人员而言到底意味着什么?Tom Nolle分享了他的想法。

在模块化应用世界里,最为持久的争论莫过于面向服务架构和表述性状态转移之争了。本文探讨这样的争论带来了什么及其背后的原因。

SOA已经被定性为连接组件和工作流的严格的且重量级的方案,REST则赢得了更多的赞誉。两者的特征都是简化,但是要学习RESTful API设计,架构师和开发人员必须理解SOA和REST之间的差异,学习REST和云以及微服务一起的演进,并且了解如何构建稳定且合规的RESTful工作流。

SOA广义上指基于连接的组件化服务的应用设计,基于这个定义,REST实际上是SOA的一种实现。实际API之争是在简单对象访问协议(SOAP)及实现其Web服务标准和REST之间。这两者有着本质的不同:SOAP从用于扩展网络连接之上的模块化编程的远地过程调用演进而来,而REST从互联网组件的“资源”角度而来。

有状态 vs. 无状态
使用SOAP,网络连接的组件是模块,也就是说他们可以被看成带有功能调用和参数的“过程”或者“类”。SOAP的目标是使得过程能够在远程工作,包括让开发人员找到过程,并且将其正确绑定到执行上。在REST的世界里,组件代表请求访问的资源——一个内部实现细节不透明的真正黑盒子。SOAP里不会假定远程组件是无状态的。本地过程以及REST则会假定调用是无状态的;在执行之间RESTful服务不会驻留任何东西。

云计算和微服务几乎已经使得RESTful API成为了既定业界标准,因此对于开发人员和架构师而言需要重点理解REST。

正是REST的无状态特征使其在云应用里作用非凡。当错误发生时,无状态组件可以随意重新部署,也可以在负载改变时随意伸缩。因为任意请求都可以发送到组件的任意实例上;不会有任何东西保存在另一个实例里,而需要下一次事务“记忆”住的。SOAP开发也可以这么实现,但并不是必须的。

基于这个原因,Web场景下更喜欢使用REST,不过在云服务里RESTful模型也很有用,因为通过API绑定到某个服务一般而言就是控制URL解析的方式。如果一个应用通过URL“知道”某个组件或者微服务,那么如果服务最初的实例出现故障,改变URL相关联的IP地址就会让请求路由到新的实例里。不需要其他额外的目录管理。如果URL指向某个负载均衡器,那么使用简单的算法就可以分发工作,因为没有哪个请求特别需要某个“记忆”了状态的特定实例来处理。

云和微服务
云计算和微服务几乎已经使得RESTful API成为了既定业界标准,因此对于开发人员和架构师而言需要重点理解REST。这意味着在应用里需要解决状态控制的一致性,管理安全性,从而解耦合组件并且创建高效的服务目录。

REST里有两种管理状态的方式——在RESTful调用里将状态传递给服务,或者由服务的任意实例都可以访问的后台数据库来维护状态。如果想要RESTful应用像基于SOAP的应用一样合规,那么就需要采取一致的方案。除非访问后台状态数据库的方案不现实,否则都应该考虑优先选择后台状态管理。客户端状态控制在客户端实例故障时会导致问题。

保证安全性

REST的安全问题很可怕,但是大多数情况下,这些安全问题的假设都是应用组件放置在开放的互联网或者VPN里。简单确定组件部署处的私有的RFC1918地址空间,可以大幅提高REST安全性。当组件间大规模集成对于应用而言必不可少时,这样的方案就不适用了,那么就有必要使用安全连接,比如https。身份令牌也可以作为RESTful API数据包的一部分。

有很多REST目录服务,ProgrammableWeb可能是其中最知名的服务,但是它们都关注于公开暴露的API。Internet社区内部关于私有RESTful API是否自相矛盾这个问题上存在争议,但是从实用的角度,大多数公司都需要使用私有API目录,从而让开发人员可以访问其RESTful API。否则,肯定会影响到企业数据和合规需求。

如果你在考察RESTful API目录工具,首先需要关注那些为微服务而设计的工具,因为这是云API领域的整体趋势。核心需求是支持三层API——私有内部或者甚至部门的API,“合作伙伴”或者社区API以及公开API。不过要记住,如果可以在网络地址空间里访问Web服务或者微服务,它就有可能被hack。即使API目录有安全保障,也同时需要考虑恰当的地址控制或者工作流加密。

REST和微服务使得组件整合更为容易,并且提供了云和虚拟化应用大规模扩展和弹性的可能性。通过解耦合SOAP引入的组件绑定规则来实现,那么应用规划师和开发人员可以通过其他方式实现安全和合规支持。REST和微服务在业界快速得到大量支持,因此需要在你的应用里准备好使用它们。

本文转自d1net(转载)

时间: 2024-11-05 12:15:04

RESTful API设计给开发人员带来怎样的未来?的相关文章

RESTful API 设计最佳实践

Web API 近几年变得越来越火,而简洁的 API 设计在多后端系统交互应用中也变得尤为重要.通常,会使用 RESTful API 来作为我们的 Web API .本文介绍了几种简洁 RESTful API 设计的最佳实践. 使用的名词而不是动词 使用名词来定义接口 资源 GET PUT POST DELETE 一组资源的URI,比如http://www.waylau.com/resources/ 列出 URI,以及该资源组中每个资源的详细信息(后者可选). 使用给定的一组资源替换当前整组资源

会话失效-restful api设计,禁用cookie,如何实现会话管理

问题描述 restful api设计,禁用cookie,如何实现会话管理 我在设计restful api时,使用了session来进行会话管理,即登陆时返回一个令牌给客户端,而服务器端保存该令牌在session中,每次客户端使用令牌获取api访问权限,但是现在遇到一个问题,使用session需要用到cookie,但是如果不开启cookie,那会话管理就失效了(必须通过jsessionid来获取对应的session),本来我知道可以用URL重写来做,但是restful似乎无法支持URL重写吧,我的

初步了解CoffeeScript以及它为开发人员带来的优势

CoffeeScript 可编译成高效 JavaScript,除了可在 Web 浏览器中运行 JavaScript,您还可以将它与诸如 Node.js 一类的技术相结合用于构建服务器应用程序.本系列文章由 4 部分组成,第 1 部分将初步了解 CoffeeScript 以及它为开发人员带来的特有优势.您可以构建 CoffeeScript 编译器,然后使用它来创建准备在浏览器或者服务中运行的代码. CoffeeScript 编程语言是构建于 JavaScript 之上,它可编译成高效 JavaSc

8个对于Web设计和开发人员非常有用的在线工具

导读:作者Henry Jones写了一篇<8 Useful Online Tools for Web Designers and Developers>,现将译文<8个对于Web设计和开发人员非常有用的在线工具>转载,以下是文章内容: 在工作中借助一些非常好用的工具可以让你专注于更重要的事情,进而提高工作效率.本文收集了一些设计和开发相关的在线工具,分享给大家,希望对你有帮助. ProCSSor ProCSSor是一个很不错的CSS代码美化工具,它可以帮助你很轻松的把代码转换成很美

对Web设计和开发人员有用的15个Chrome插件

导读:原文作者Brian在freelancefolder.com发表了一篇<15 Useful Google Chrome Extensions for Web Designers and Developers>,由伯乐在线敏捷翻译组编译,文章介绍了非常有用的15个Chrome插件.以下是全文: 最近我才把谷歌浏览器设为默认浏览器,而与此同时我开始将它用于我的兼职Web设计和开发项目中.由于我所依赖Firebug的插件,在Chrome浏览器并没有完全的对应插件,所以我还是时不时要用Firefo

RESTful API 设计指南

作者: 阮一峰 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致 API 构架的流行,甚至出现"API First"的设计思想.RESTful API 是目前比较成熟的一套互联网应用程序的 API 设计理论.我以前写过一篇<理解 RESTful 架构>,探讨如何理解这个概念. 今天,我将介绍 RESTful API 的设计细节,

微软携手BrowserStack为开发人员带来免费的Edge测试工具

在发布面向应用程序创作者和独立软件开发人员的"应用加速"(App Accelerate)项目之后,微软现在又推出了另一款面向开发者的新功能 -- 携手 BrowserStack 带来的 Edge 免费测试工具.作为一家移动与 Web 测试服务提供商,BrowserStack 为 Edge 浏览器提供了远程虚拟测试工具,而且是免费的.此前,如果开发者想要针对特定版本的程序进行调试,只能依赖于并不方便的虚拟机或运行 Windows 10 操作系统的 PC . 不过现在,开发者们可以在在任何

从英文变形规则计算到Restful Api设计

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/938 一.介绍Cocoapods Cocoapods是引入为项目引入新血液的接口,只有引入了新血液,功能才可以多样化,进而满足不同的消费群体.使用Cocoapods可以方便日后对项目的管理,是工程师在工作效率上提升的必杀技.做一个完美的APP,不是为了实现功能便可以放松警惕,而是在日后回头看我的功能时更容易管理与维护,以至于提升.那么跟着我来如何使用Cocoapods. 二.安装Co

如何更好的设计RESTful API

当您的数据模型已开始稳定,您可以为您的网络应用程序创建公共API. 你意识到,很难对你的API进行重大更改,一旦它发布,并希望尽可能得到尽可能多的前面. 现在,互联网对API设计的意见有很多. 但是,因为没有一个广泛采用的标准在所有情况下都有效,所以你前面有一堆选择:你应该接受什么格式? 你应该如何认证? 你的API是否应该版本化?构建API是您可以做的最重要的事情之一,以提高您的服务的价值. 通过使用API,您的服务/核心应用程序有可能成为其他服务增长的平台. 看看当前巨大的科技公司:Face