restful api

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

REST(REpresentational State Transfer),中文翻译为表述性转移。这个概念在Roy Thomas Fielding的paper中得到了很好的论证。文章的题目叫《Architectural Styles and the Design of Network-based Software Architectures》,是一篇架构描述不可多得的文章。 

REST的风格主要有以下特点:

1、REST风格的服务是通信无状态的(communicatestatelessly)

从客户端向服务器发出的每一次请求都必须包含理解该请求的所有必须信息。不能利用服务器上的上下文。

2、具有统一的接口。

如:GET、POST、DELETE、PUT等,这些接口能基本完成日常所需的CRUD操作。

3、所有信息都被抽象为资源,并用一个URI唯一标识。

4、REST组件通过交换资源的表述来对资源进行处理,资源的多重表述。

如后台的多样化返回:XML或JSON等。这是REST和RPC(RemoteProcedureCall)方法的主要区别。

REST强调的是组件交互的伸缩性,接口的通用性,组件部署的独立性。以JWS为例,在实际开发中可以用XSLT和JAXP完成数据的转换工作。所以,我们可以用JWS方式来部署REST服务。又回到了之前提出的疑问了,SOA这样的架构或者拿CXF写的服务和REST之间到底有什么区别。

使用REST风格来做服务的话,对程序的侵入性可以讲到很低,不用像传统的WSDL开发那样,往自己程序里写东西。而且REST的统一接口有利于服务的维护。当然也正是因为使用这些统一接口使得服务的灵活性不是那么的好,虽然减少了服务端的开发量,但是增加了前台的开发量。所以我觉得可以将两者结合开发,针对那些通用的,对外的可用REST风格包装成Facade,而那些特定的,需要订制的,则采用SOA的方式部署。

相关推荐