REST|RESTful初步认识
工作中要用到jersey来实现restful风格的webservice。对于webservice另一定的认知(能够觉得是一种服务,远程调用的组件),可是对于restful笔者根本就木有了解过,restful究竟是什么,是一种技术?规范?于是笔者花了些时间查询了下资料,看了下书,总算有点眉目了。
什么是REST
REST(REresentation State Transfer:表象化状态转变)描写叙述了一个架构样式的网络系统,它是一种架构风格、设计风格而不是标准、技术,只不过提供了一组设计原则和约束条件(并且并不强制)。Restful式的架构主要用于client和server交互类的软件,基于这个风格设计的软件能够更简洁,更有层次,更易于实现缓存等机制。如今来说,REST/RESTful都是指的RESTful Web Service。
REST标准
REST是面向资源的架构风格,通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。在你的应用系统管理之下的不论什么事物都将被觉得是一个资源(resource),每一个资源必须至少有一个URI(尽量少且具有实际意义)。
- 资源是有URI来指定的(client也是通过URI来訪问的)。
- 对资源的操作包含获取、创建、改动、删除等操作,而这些操作正好相应HTTP协议提供的GET、POST、PUT、DELETE方法。
- 通过操作资源的表现形式来操作w资源。
- 资源的表现形式则是XML或者HTML。
REST的要求
对于实际的web架构假设要实现RESTful风格,有下面4点要求:
- 具有client和server结构
- 连接协议具有无状态性。
- 可以利用Cache机制增进性能
- 层次化的系统。
RESTful最重要的原则是:client和server之间的交互在请求之间是无状态的。从client到server的每一个请求都必须包括理解请求所必须的信息。这样server端在请求期间重新启动,client不会得到通知,且无状态请求能够由不论什么可用服务进行回答,client能够缓存数据以改进性能。
层次化的系统表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在但各层,能够限制整个系统的复杂性,促进了底层的独立性。
应该注意差别应用的状态和连接协议的状态。HTTP连接是无状态的(也就是不记录每一个连接的信息),而REST传输会包括应用的全部状态信息,因此能够减少对HTTP连接的反复请求资源消耗。
含状态传输的web服务也称为RESTful web api是一个使用HTTP并遵循REST原则的Web服务(JAX-RS规范定义了java对RESTful Web Service的实现,sun的jersey框架则是多JAX-RS的一个实现,jersey也是兴许要学习的)。
RESTful web api从下面三个方面资源进行定义:
- 直观剪短的资源地址:URI,比如:http://XXX.com/resources。
- 传输的资源:Webserver接受与返回的互联网媒体类型:JSON、XML、TEXT等。
- 对资源的操作:Web服务在该资源上所支持的一系列请求方法(PUT POST GET DELETE)
REST长处
1、可更高效利用缓存来提高响应速度。
2、无状态性能够让不同server的处理一些列请求中的不同请求,提供server的扩展性。
3、浏览器就可以作为client,简化软件需求。
4、相对于其它叠加在HTTP协议之上的机智,REST的软件依赖性更小
5、不须要额外的资源发现机制。
REST|RESTful初步认识的更多相关文章
- 关于RESTFul初步理解
RESTFul架构:是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. 即:Representational State Transfer 表现 ...
- Java RESTful Web Service相关概念
原文地址:http://1.liangtao.sinaapp.com/?p=647 接上一篇文章REST|RESTful初步认识:p=639">http://1.liangtao.si ...
- ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- RESTful Web Services初探
RESTful Web Services初探 作者:杜刚 近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTf ...
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- 移动互联网实战--Web Restful API设计和基础架构
前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...
- 构建基于WCF Restful Service的服务
前言 传统的Asmx服务,由于遵循SOAP协议,所以返回内容以xml方式组织.并且客户端需要添加服务端引用才能使用(虽然看到网络上已经提供了这方面的Dynamic Proxy,但是没有这种方式简便), ...
- 【转】RESTful Web Services初探
近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTful风格的Web Services,比较著名的包括Twit ...
- restful风格,restcontroller与controller
restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...
随机推荐
- POJ 1146:ID Codes
ID Codes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6281 Accepted: 3769 Description ...
- Java中动态代理技术生成的类与原始类的区别 (转)
用动态代理的时候,对它新生成的类长什么样子感到好奇.有幸通过一些资料消除了心里的疑惑. 平时工作使用的Spring框架里面有一个AOP(面向切面)的机制,只知道它是把类重新生成了一遍,在切面上加上了后 ...
- ACdream 之ACfun 题解
A - ACfun Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitSta ...
- 【设计优化】-使用缓冲(Buffer)提高程序性能
缓冲区是一块特定的内存区域.开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异,提高系统性能. 缓冲能够协调上层组件和下层组件的性能差异.当上层组件性能因为下层组件时,能够有效地降低上层组件对下层 ...
- 【原创】poj ----- 2524 Ubiquitous Religions 解题报告
题目地址: http://poj.org/problem?id=2524 题目内容: Ubiquitous Religions Time Limit: 5000MS Memory Limit: 6 ...
- Java实现字符全阵列阵列
import org.junit.Test; public class AllSort { public void permutation(char[] buf, int start, int end ...
- 如何解决Android SDK无法下载Package的问题(.net)
有些用户在安装好Android SDK后,打开Android SDK Manager下载API时一直显示“Done loading packages”却迟迟不能前进,界面显示的Package空空如也. ...
- 【设计模式】Template Method模式
OO基金会 封装 多态 继承 OO原则 封装变化 多用组合,少用继承 针对接口编程.不针对实现编程 为交互对象的松耦合设计而努力 类应该对扩展开放,对改动关闭 依赖抽象,不要依赖详细类 仅仅和朋友交谈 ...
- 打开 chm 帮助文件显示空白及解决方法
有个很奇葩的解决方法:把 chm 文件用压缩软件压缩,然后用压缩软打开此压缩包,直接双击压缩包里面的 chm 文件 这虽然解决了问题,但是这不科学…… 分析:直接打开压缩包里面的文件,压缩包的文件是临 ...
- Oracle 工艺结构
Oracle工艺结构 这个过程是动态创建,完毕任务后就消亡:而程序是静态的实体,程序是能够复制.编辑的.进程强调的是运行过程,而程序不过指令的有序集合:进程在内存中,程序在外存中. ORACLE分为用 ...