何为REST?
学习Web Service时,不免会经常遇到REST这个术语。他的含义是:Representational State Transfer(表述性状态转移)。其实,简而言之,REST就是一种解决方案,一种思想。其主要目的在于,提高系统的可伸缩性和降低系统开发的复杂度,同时简化基于Web Service服务的架构开发。
?
在REST中一个很重要的概念是:资源!然而在WEB中一个资源的含义,并非指“一本书”,“一张纸”这样的具体数据。这里的“资源”,等于“数据+表述”。什么意思?比如说:“家里有6个孩子”和"比我大的有4个孩子"。这两句话中的数据有重叠的部分(我家里比我大的孩子),但是他们的表述是不同的。这就可以看出这里的资源,是数据和表述的结合体。
?
REST之所以可以简化开发工作,是因为他规定了一些约束:
?
@ 网络上的所有事物都被抽象为资源(Resource);
@ 每个资源都要有一个唯一的标识符(Resource Identifier)。(URI)
@ 只可以通过通用的连接器接口(Generic Connector Interface)对资源进行操作。(HTTP)
@ 对资源的各种操作不会改变资源的标识符。
@ 所有的操作都是无状态的。
?
使用REST应该注意的问题:
# REST的无状态性,虽然提高了系统的可伸缩性,但增加了客户端和服务器端的通信量,可以采用客户端缓存机制来提供通信的效率,但这样做,可能会带来客户端和服务器端的一致性和安全性等问题。
# REST关键所在:怎样抽象资源?
# REST中服务器端只提供Resource,客户端需要根据服务器端返回的Data和Representation,自己解决解析和显示的问题。
?
REST可使用的一些框架(遵循JAX-RS标准):
?
Jersey,CXF,RESTEasy,Restlet
?
?
?
?
?
?