博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Java的REST架构风格及接口安全性设计的讨论
阅读量:6831 次
发布时间:2019-06-26

本文共 1635 字,大约阅读时间需要 5 分钟。

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

 

写在最后: 

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

转载于:https://juejin.im/post/5cfdc5d46fb9a07ed136c978

你可能感兴趣的文章
Linux 软件包管理之RPM
查看>>
Linux bash入门
查看>>
网络协议
查看>>
SecureCRT右键粘贴的设置
查看>>
TurboMail邮件系统定制同步某地产集团微软活动目录服务(AD)用户数据
查看>>
华章9-10月份新书简介(2016年)
查看>>
【Tomcat】面向初级 Web 开发人员的 Tomcat
查看>>
浏览器屏幕宽度相关值得获取
查看>>
vue.js模拟后端请求
查看>>
我的友情链接
查看>>
45 个非常有用的 Oracle 查询语句
查看>>
C#控制台应用程序下 string[] args参数用处
查看>>
linux下vi编辑器命令大全
查看>>
程序员的爱情
查看>>
MySQL 备份和恢复策略
查看>>
简单网络管理协议snmp
查看>>
语言和封装那些事
查看>>
postgres 数据备份与恢复
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
Java基础学习总结(16)——Java制作证书的工具keytool用法总结
查看>>