基于Java的REST架构风格及接口安全性设计的讨论

1.REST即表现层状态传递(Representational [,rɛprɪzɛn'teʃnl] State Transfer,简称REST)。

(1)REST名词解释:
通俗来讲就是资源在网络中以某种表现形式进行状态转移。分解开来:
Resource:所指的不只是数据,而是数据和表现形式的组合;
Representational:某种表现形式,比如用JSON,XML,JPEG等;
State Transfer:状态变化。通过HTTP动词实现。
(2)RESTful API:
REST(表述性状态转移)是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。
参考博文:
 
2.Java中实现RESTful API的主流框架:
l Jersey
l RESTEasy
l Restlet
l Apache CXF
以上几个均为基于JAX-RS的实现,在性能测试中,JBoss的RESTEasy吞吐率最好,SUN的Jersey其次,CXF、Restlet最差。(网评)
 
 
3.满足HATEOAS(超媒体作为应用状态的引擎 Hypermedia As The Engine Of Application State)约束的REST实现,使用Spring Data项目中的以下几个子项目:
(1)spring-data-rest并没有真正的实现JAX-RS(Java API for RESTful Web Services)规范。
其中JAX-RS是Oracle的Java EE 6的技术,与Spring开源平台下的框架有所不同。
(2)Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。
此外,Spring Data还包括包括非关系 数据库、Map-Reduce 框架、云数据服务等等;
 
HATEOAS(Hypermedia as the engine of application state)是 REST  架构风格中最复杂的约束,也是构建成熟 REST 服务的核心。REST 成熟度模型把 REST 服务按照成熟度划分成 4 个层次:
  • 第一个层次(Level 0)的 Web 服务只是使用 HTTP 作为传输方式,实际上只是远程方法调用(RPC)的一种具体形式。SOAP 和 XML-RPC 都属于此类。
  • 第二个层次(Level 1)的 Web 服务引入了资源的概念。每个资源有对应的标识符和表达。
  • 第三个层次(Level 2)的 Web 服务使用不同的 HTTP 方法来进行不同的操作,并且使用 HTTP 状态码来表示不同的结果。如 HTTP GET 方法来获取资源,HTTP DELETE 方法来删除资源。
  • 第四个层次(Level 3)的 Web 服务使用 HATEOAS。在资源的表达中包含了链接信息。客户端可以根据链接来发现可以执行的动作。
 
从上述 REST 成熟度模型中可以看到,使用 HATEOAS 的 REST 服务是成熟度最高的,也是推荐的做法。对于不使用 HATEOAS 的 REST 服务,客户端和服务器的实现之间是紧密耦合的。客户端需要根据服务器提供的相关文档来了解所暴露的资源和对应的操作。当服务器发生了变化时,如修改了资源的 URI,客户端也需要进行相应的修改。而使用 HATEOAS 的 REST 服务中,客户端可以通过服务器提供的资源的表达来 智能地发现可以执行的操作。当服务器发生了变化时,客户端并不需要做出修改,因为资源的 URI 和其他信息都是动态发现的。

猜你喜欢

转载自blog.csdn.net/s313596790s/article/details/74315513