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

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

通俗来说就是资源在网络中以某种表现形式进行状态转移。分解开来: spring

Resource:所指的不仅是数据,而是数据和表现形式的组合; 数据库

Representational:某种表现形式,好比用JSON,XML,JPEG等; 服务器

State Transfer:状态变化。经过HTTP动词实现。 网络

(2)RESTful API: 架构

REST(表述性状态转移)是一组架构约束条件和原则。知足这些约束条件和原则的应用程序或设计就是RESTful。 app

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 和其余信息都是动态发现的。

 

写在最后: 

码字不易看到最后了,那就点个关注呗,只收藏不点关注的都是在耍流氓! 关注并私信我“架构”,免费送一些Java架构资料,先到先得! 

相关文章
相关标签/搜索