文档章节

REST 之我的理解

zzbb
 zzbb
发布于 2015/07/01 22:30
字数 960
阅读 32
收藏 0

最近准备学习一下REST相关的web service。 也可以说是阅读了《RESTful web service 实战》这本书的读书笔记。 希望通过这些整理, 对REST有更清晰的理解。 

1 REST 是什么

REST- Representational State Transfer 是源于Roy Thomas Fielding 博士2000年的论文, 这个是开山之作。 

不是一种新的技术或者标准, 而是一种新的架构风格。 利用既有技术 HTTP+URI+XML, 充分利用了HTTP 的几种方法对应于网络资源的增删改查。 而这种风格下, 对象被抽象成为一种资源, 某个瞬时状态被定义成一种表述, 包括资源的内容, 表述格式(XML, JSON,。。。)等信息。 

可以归纳为, 访问一个具有指定性和描述性的URI, 经过HTTP, 将资源表述从服务器到客户端的这个过程。 

2 REST 与传统的Web Service 区别

从架构风格的抽象高度来看,常见的分布式应用架构风格有三种:1.分布式对象(Distributed Objects,简称DO)、2.远程过程调用(Remote Procedure Call,简称RPC)、3.表述性状态转移(Representational State Transfer,简称REST)

传统的DO分布式调用, 例子有CORBA, COM等, 应该不是跨语言的(?)分布式对象不是跨平台的,

传统的web service, SOAP WS。 它的实例有Sun公司的Java RMI(Remote Method Invocation)技术、EJB技术等

 - 它把HTTP作为一种传输协议来用(可以HTTP, 可以UDP), 没有充分利用HTTP 的特点。 

 - XML 这种文件格式冗余度很高, 网络利用率不高。 

 - 虽然支持互操作, 到那时由于协议栈的复杂度高, 但是互操作性并不好。 - 应该是指的SOAP 这种协议的复杂性。 

 - - JAX-WS

 - RPC风格, 关注的重点是method

而REST

  - 充分利用HTTP 协议的特点, 当然也跟HTTP 绑定在一起了。 

 - 完全基于POJO, 容易单元测试

 - 支持WADL, 当然SOAP 支持WSDL, 这个类似吧。 

 - 支持JSON 

 - JAX-RS

 - REST风格关注的重点是对象, 特定状态

多数场合, REST是更高效的。 

当然, JAX-RS并不代表REST, 因为REST的定义更广泛, 当然实现成为标准会有一个过程。 

比如 HATEOAS 等。 


那么REST会取代 SOAP/WSDL么, 首先在企业应用领域对数据对象复杂度要求更多, 更严格的定义和要求,, 很多时候需要XML 来处理。 而且既有的企业市场, 如果实现这种转换是需要时间和精力,代价不一定值得, 所以会比较久的共存。 


3 规范和开发框架

规范是 JAX-RS, 开发框架有Jersey, CXF, JBoss提供的RESTeasy后面可以以jersey 为主来理解和学习REST.

Wadl 是可以产生客户端代码的。 还可以导入到soapui中然后自动化集成。 


4 REST 的几条原则

- 资源是URI 来指定的。 为所有“事物”定义ID 

- 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的标准方法GET、POST、PUT和DELETE。 

-通过操作资源的表现形式来操作资源。 

- 无状态通信

什么叫无状态通信, 从客户端到服务器的每个请求都必须包含理解请求必须的信息, 这样对于集群处理, load balance 非常有好处。 请求之间不应该有依赖是不? 

5 其他问题

1 POJO  是说只能是基本对象作为参数类型么?

2 下面通过一些实例来解读体会REST 风格。 然后整理REST的一些设计原则。 








© 著作权归作者所有

共有 人打赏支持
zzbb
粉丝 61
博文 30
码字总数 63635
作品 0
沧州
程序员
私信 提问
体验Django REST framework,解读REST架构风格

因为项目中使用了REST API,所以对REST架构风格做了一些研究。如果有对REST架构风格还不了解,或者一知半解的朋友,可以读读我的另一篇文章《那些年,我们一起误解过的REST》。 一开始在项目...

aa按时发生
2018/09/04
0
0
Nodejs Restful Api几点讨论

关于 rest api 版本控制 很多事情,标准和最佳实践是一种平衡 看那本rest api会被玩死,并不实用 rest本身是好东西,其实我只要取其精华就好了 没必要完全按照它做,理解状态变化就好了 标准...

i5ting
2015/08/24
0
10
WEB开发中,使用JSON-RPC好,还是RESTful API好?

两者没有高下之分,无非是一种约定俗成的标准。习惯用RPC就用RPC,能理解REST就用REST。 JSON-RPC比较符合直观,格式也相对宽松; REST最近正流行,有自己的一套设计规范。 REST面对的疑问跟...

slagga
2018/03/01
0
0
一个简单的实例来聊聊什么是Restful接口

Restful接口的简介 通过学习本文档后能够掌握到的知识点 1.Restful的基本概念 2.Restful原则条件 3.Restful分层系统 子曰:“学而不思则罔,思而不学则殆。” 1. 使用Restful的原因 2018元月...

qq_40709468
2018/03/15
0
0
REST以及RESTful理解

一、传统下的API接口 http是目前在互联网上使用最多的协议,没有之一。   可是http的创始人一直都觉得,在过去10几年来,所有的人都在错误的使用Http.这句话怎么说呢?   如果说你要删除...

GordonNemo
2018/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
今天
6
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
6
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
10
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部