(转) REST和RESTFUL的相关概念理解

1.REST和RESTFUL是什么
   REST ( REpresentational State Transfer ),State Transfer 为 "状态传输" 或
"状态转移 ",Representational 中文有人翻译为"表征"、"具象",合起来就是 "表征状态传输" 或 "具象状态传输" 或
"表述性状态转移"
   REST是一种架构风格,REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性。
   REST提出设计概念和准则为:
   1.网络上的所有事物都可以被抽象为资源(resource)
   2.每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
   3.所有的操作都是无状态的
 
 REST简化开发,其架构遵循CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建,获取,更新和删除就可以完成相关的操作和处
理。您可以通过统一资源标识符(Universal Resource
Identifier,URI)来识别和定位资源,并且针对这些资源而执行的操作是通过 HTTP
规范定义的。其核心操作只有GET,PUT,POST,DELETE。

由于REST强制所有的操作都必须是stateless的,这就没有上下文的约束,如果做分布式,集群都不需要考虑上下文和会话保持的问题。极大的提高系统的可伸缩性。

2.restful目前使用现状

目前真正实现rest概念的组件比较少,大多数程序员所谓的rest只不过是以GET访问某个URL。对java而言,后台大多数使用spring来处
理各类参数及路径参数。但这并不真正符合Rest的本义,原始的Rest是把所有资源都虚拟化为URL/URI来表示,所有操作都使用HTTP的几个动作
来完成。之前最纯正的REST实现是RestLet,RestLet基本完全按照作者的博士论文的思路来设计;后边陆续出了一些介于http与原始
rest的实现,前段时间Linkedin出了一个http://Rest.Li,该项目主要是把基于文本的协议修改为二进制协议,效率自然没得说,但引入了过多的复杂性,违背了rest简洁的本意。

现实中的大多数项目,性能的瓶颈主要集中在后端业务逻辑及算法,协议本身导致性能低下的较少。

3.SOAP Webservice和RESTful Webservice

WebService是一种能够使应用程序在不同的平台使用不同的编程语言进行通讯的技术规范,而这种技术规范的实现可以用不同的方法,比如使用基于XML形式的协议(SOAP)进行通讯或者是RESTFUL形式的。

既然我们知道可以使用上面的两种形式进行通讯,那么我们就需要对上面的两种形式进行描述,规范化。而这些规范化的工作sun已经帮我们完成了,也就是JAX-WS,JAX-RS这两种规范。

JAX-WS是一种规范,而在jdk1.6之后就有了自带的实现,但是这种实现是比较简单的,基本上就只能够传递SOAP协议格式的消息。这就是为什么我
们可以在没有axis2或者CXF的情况下开发WebService。 
这时候我们就会想了,如果我们需要其他的服务,比如我想让JAX-WS与Spring集成。这种需求前辈都已经考虑过了,也实现了,不需要我们在去实现这
样的需求。而这种需求的解决方案在JAX-WS中是采用框架。而JAX-WS的框架就有AXIS2和CXF。框架使用起来可能会更加灵活,功能更加强大。
比如CXF不仅仅实现JAX-WS,也实现了JAX-RS规范。

那么选择SOAP Webservice和Restful Webservice的使用,
首先需要理解就是SOAP偏向于面向活动,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作方法和操作对象的分离,有WSDL
文件规范和XSD文件分别对其定义。而REST强调面向资源,只要我们要操作的对象可以抽象为资源即可以使用REST架构风格。

(原文)http://blog.csdn.net/wangyajin333/article/details/47155533

时间: 2024-10-18 11:05:45

(转) REST和RESTFUL的相关概念理解的相关文章

说说自己对RESTful API的理解s

REST不是英文上的rest单词,其英文缩写为presentational State Transfer ,直译为表现状态转移,咋看起来很学术,不懂,其实不用去死抠这个词的意思.REST是一种约束和架构(设计),符合这个风格的都算API.如果实在想了解REST ,直接看提出REST的那篇论文. 知乎上有句话总结的很好了,URL定位资源用HTTP动词(GET POST DELETE)描述操作. 其实只要理解以下几个原则就可以了: 1.提供资源定位 一般在计算机系统中,client和server通信

网上整理的对于Rest和Restful api的理解

一.什么是Rest? REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译正常人根本看不懂,找到的一种最好理解的说法是,URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作. 二.Restful api接口有什么特征? REST描述的是在网络中client和server的一种交互形式:REST本身不实用,实用的是如何设计 RESTful API(RES

powerdesigner相关概念理解

1.标定联系与非标定联系 每一个Entity型都有自己的Identifier,如果两个Entity型之间发生关联时,其中一个Entity型的Identifier进入另一个Entity型并与该 Entity型中的Identifier共同组成其Identifier时,这种关联称为标定关联,也叫依赖性关联(dependent relationship).一个Entity型的Identifier进入另一个Entity型后充当其非Identifier时,这种关联称为非标定关联,也叫非依赖关联. 概念的定义

restful 风格的理解

rest   其实就是representation    status   transfer(表现层状态转换) restful 风格的API具有如下特征: 1. 每个URI  包含一种资源,而且URI只由名词组成,不包含动作 2. 客户端与服务器之间,通过表现层传递资源 3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化". 推荐一篇写的很好的博客:http://www.ruanyifeng.com/blog/2011/09/restful.html 原文地

javascript系列学习----对象相关概念理解

1.构造函数(相对于面向对象编程语言里面的类) 2.对象实例(它是由构造函数构造出来的对象,使用到关键字 new) 3.this关键字(往往是指我们的对象本身) 下面我们来看一个实例: var Person = function Person(living, age, gender) {     // "this" below is the new object that is being created (i.e. this = new Object();) this.living

实现一个符合 RESTful 架构的程序

前言:在网上经常看到 RESTful,十分好奇,于是自己来试试. 代码地址:https://github.com/yuleGH/restdemo 首先,介绍一下 RESTful 架构:理解 RESTful 架构(转) 然后,开始尝试 需求: 简单实现 CRUD 设计一下 API: GET  http://localhost:8080/api/users  返回用户列表 GET  http://localhost:8080/api/user/1 返回用户 id=1 的数据 POST  http:/

RESTful风格学习小记

参考资料:(1)https://maimai.cn/article/detail?fid=1362221525&efid=iwXvSE_vD9dNRUX_dboP1g(2)http://www.ruanyifeng.com/blog/2011/09/restful.html  (3)https://www.cnblogs.com/duhuo/p/4245202.html 1.概念 RESTful不是一种技术,而只是一种API接口设计规范.凡是符合该规范的设计,都可以认为RESTful风格的服务.

【WEB API项目实战干货系列】- 导航篇(十足干货分享)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在今天移动互联网的时代,作为攻城师的我们,谁不想着只写一套API就可以让我们的Web, Android APP, IOS APP, iPad APP, Hybired APP, H5 Web共用共同的逻辑呢? [WEB API项目实战干货系列]

OpenStack?HTTP协议

前言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准 HTTP是一个基于TCP/IP通信协议来传输数据(HTML文件.图片文件.查询结果) HTTP协议工作于客户端-服务端架构为上.浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求.Web服务器根据接收到的请求后,向客户端发送响应信息.(请求的数据往往比较小,而返回的数据往往比较大.因为返回的数据中包含了Body