什么是REST?
REST是Roy Fielding在他的博士论文中提出的词汇,是对网络系统构架的一个描述。REST是表现性状态传输首字母缩写(Representational State Transfer)。
Roy Feilding这么解释表现性状态传输的意义:
引用 “表现性状态传输试图描述一个设计优良的Web是如何运转的:用户在web网络(虚拟状态机)里通过点击链接处理应用(状态传输),结果就是传输并渲染下一个页面给用户(应用程序的下一个状态的表现性)。“
REST的目的
REST的目的是寻找让Web如此成功的特性。然后再使用这些特性指导Web变革。
REST是一个结构设计,而不是一个标准
REST不是一个标准,你永远也不会看到W3C发布REST白皮书。你也不会看到微软或者IBM销售REST开发工具。为什么?REST它仅仅是一个结构设计而不是一个标准。你不能控制这个设计,你仅能够理解并且应用在你的Web服务中。(类似的C/S结构也是一种结构设计,而不是一个C/S标准)。
虽然REST不是一个标准,但它确实使用标准:
HTTP
URL
XML/HTML/GIF/JPEG等等(状态表现)
text/xml, text/html, image/gif, image/jpeg等等(MIME类型)
经典的REST系统
Web就是REST系统,有很多你使用了很多年的服务就是基于REST的Web服务,例如:订书服务、搜索服务、在线电子字典。
REST是关于Web的一张“大蓝图”,它不负责处理具体的执行细节(例如:使用Java还是CGI来实现一个Web服务)。所以让我们用REST“大蓝图”的观点来设计一个Web服务。
REST Web服务的特征
C/S结构:一个完全基于交互的设计
无状态:每个发送给服务器的信息必须包含服务器处理所需的所有信息,不能通过在服务器保存相关信息而获益。
缓存:为了提供网络的效率,响应必须标志出是否可以缓存。
统一的接口:所有的资源都可以通过一个通用的接口访问(例如:HTTP GET、POST、PUT、DELETE)。
命名的资源:组成系统的资源使用URL来命名。
互联资源表现性:资源的表现性通过URL实现互联,因此客户可以一个状态接着一个状态处理。
组件层:可以在客户和资源间插入用于提高效率,增强安全的的中间件,象代理服务、缓存服务、网关等。
REST Web服务设计原则
1.以REST网络建立Web服务的关键(例如Web)是确定想作为服务展现的所有概念化的实体。
2.为每个资源提供URL。资源应该是名词,不是动词
3.根据客户处理资源的方式分类,可以分为客户仅接收资源的表现性,客户能够修改(增加)资源。对于前者,提供HTTP GET方法访问。对于后者,提供HTTP POST、PUT和(或)DELETE。
4.所有通过HTTP GET访问的资源应该是无副作用的,也就是说,这些资源仅仅向客户返回一个资源的表现性,客户调用他们不应该对它们产生影响。
5.没有孤立的人,同样,没有孤立的表现性。换言之,在资源的表现性中提供链接,让客户能更深入的获取更多的信息,或者相关信息。
6.逐步的提供数据,不应该在一个文档里提供所有的内容,可以为更详细的信息提供链接。
7.使用模式(DTD、W3C Schema、RelaxNG或者Schematron)指定响应数据的格式。如果服务需要POST或PUT,也同样使用一个模式规定这些响应。
8.通过WSDL文档或者HTML页面描述如何调用你的服务。
分享到:
相关推荐
REST介绍 如果要说什么是REST的话,那最好先从Web(万维网)说起。 什么是Web呢?读者可以查看维基百科的词条,具体的我就不多说了。总之,Web是我们在互联网上最常用的服务,甚至在某些人的心中,互联网就是Web...
Jaxrs基本概念、基础知识介绍,Redhat PPT文档
这里详细介绍了rest开发所需jar包,以及基本流程。还有对代码的介绍,可以看看!
REST API的开发框架介绍:JSR-311,REST Web Services框架 JAX-RS,java接口;### REST Web Application多层框架 REST 应用场景,适合和不适合什么 基于HTTP的REST, 介绍资源uri,传输格式,对资源的操作(GET、...
《SOA与REST:用REST构建企业级SOA解决方案》深入介绍了SOA与REST的原理、术语及特性;深入阐述了二者之间的差异及合作点;重点阐述了如何将REST作为媒介来实现SOA的战略目标,通过对REST服务的建模流程和专为REST...
REST是一种典型的Client-Server架构 无 状态 缓存 统一的接口 分层结构 多重表述
RESTLET介绍 Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。 Restlet项目受到Servlet API、JSP(Java Server Pages...
REST的介绍,来源,限制条件,约束规则等方面的分析和学习。
gerrit-rest-java-client, Gerrit代码审查的Java REST客户端 gerrit-rest-java-client 简介Gerrit代码审查工具 REST API的Java实现。仅支持 Gerrit 2.6或者更新版本的( 。旧版本中缺少/不完整的REST API ) 。
然后我介绍了表述性状态转移(Representational State Transfer,REST)的架构风格,并且描述了如何使用REST来指导现代Web架构的设计和开发。 REST强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来...
介绍REST实践的书,很不错,有助于理解REST。
django接口开发教程。主要介绍如何通过Django-Rest-Framework快速创建REST风格的API。帮助快速进行django接口开发
切记不要自动换行! 全是我自己对它的理解和查看源码来进行中文注解的,如果注解有错请联系我进行修改。
对于初次接触DATASNAP并尝试使用其REST方式开发WEB或多层服务器架构的人员对相关概念的正确认知极有帮助,同时也包含部分对DELPHI中使用JSON的方式有清晰的介绍
第14章 REST介绍 246 第15章 封装Ext JS提高开发速度 262 第三篇 AJAX整合实践 第16章 Ext3+REST+Spring2+ Hibernate3整合方案 326 第17章 工时统计管理系统 392 本站提供的快意编程 EXT JS Web开发技术详解 PDF版...
PHP YouTrack REST介绍YouTrack REST API PHP 客户端使用与连接。 。内容安装用法更改日志贡献测试安全贡献者备择方案执照关于 CyberCog 特征框架不可知。 使用合约保持高定制能力。 多种授权策略:Token、...
REST (Representational State Transfer)是代表状态传输的缩写。它代表了分布式超媒体系统的体系结构风格,该风格是Roy Field在他的论文中定义的。它是一种针对网络应用的设计和开发方式...本手册将为您做出详细介绍。
Django restframework课件笔记详解,对Django restframework各功能模块的介绍以及真实案例分析。
主要介绍了django rest framework vue 实现用户登录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下