What is REST?
REST的全称是Representational State Transfer
- 首先它是一种架构的风格,这种架构针对Network-based Application,这种架构风格可以给我们的webapplication起到一个指导的作用,而不是强制的。
- 架构的设计有两种思路,一种是空空的一张白纸,然后往里面添加组件,另外一种是一个完整架构,然后通过添加各种约束来对架构进行优化和筛减。而REST则属于后者。
- REST的特点:REST本身并不是要基于HTTP,只是HTTP的许多特性和REST的表述不谋而合。
- 资源,在REST的世界里,所有的事物被称为资源,这里的资源是一个逻辑概念,它可以是一个实体,也可以是一个服务或者动作。每个资源都有一个唯一的标识符,HTTP里面可以用URL或者URI来表示
- 统一的接口访问这些资源,降低复杂度,每个组件都通过统一的接口访问其他组件,那么在HTTP里面就利用HTTP的标准方法GET,PUT,POST,DELETE来完成对资源的CRUD操作
- 面向表示的,这些统一的资源是如何进行表示的,那么在HTTP中有很多media type来表示资源,如xml,json等
- 无状态,stateless保证的web application的可伸缩性
- HATEOAS:就是将超文本作为状态转移的引擎,因为服务器端是无状态的,那么客户端每次都需要发送所有的信息给服务器端,另外对于有work flow的application,那么怎么做到状态转移呢,REST通过返回的时候添加URL link,这样客户通过点击link来达到状态转移。
我们的application的framework现在就用到了REST,我们使用了open source RESTEasy
后续我会介绍JSR311 1.0规范以及RESTEasy的一些特性