[收藏]REST -维基百科

表征状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

宗旨

REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。

这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,

设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。

要点及标准

需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。

  • 资源是由URI来指定。
  • 对资源的操作包括获取、修改、创建和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
  • 通过操作资源的表现形式来操作资源。
  • 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
[REST的要求
  • 客户端和服务器结构
  • 连接协议具有无状态性
  • 能够利用Cache机制增进性能
  • 层次化的系统
  • 随需代码 - Javascript (可选)
  • 关于状态

应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。

RESTful Web 服务

RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:

  • URI,比如:http://example.com/resources/
  • Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等。
  • Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。

HTTP 请求方法在RESTful Web 服务中的典型应用[1]

资源
GET
PUT
POST
DELETE

一组资源的URI,比如http://example.com/resources/
列出 URI,以及该资源组中每个资源的详细信息(后者可选)。
使用给定的一组资源替换当前整组资源。
在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。
删除 整组资源。

单个资源的URI,比如http://example.com/resources/142
获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等)
替换/创建 指定的资源。并将其追加到相应的资源组中。
把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。
删除 指定的元素。

PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此当然也是幂等的)。

不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准[2]。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。

实现举例

例如,一个简单的网络商店应用,

列举所有商品,

GET http://www.store.com/products

呈现某一件商品,

GET http://www.store.com/product/12345

下单购买,

POST http://www.store.com/order
<purchase-order><item> ... </item>
</purchase-order>

REST的优点

  • 可以利用缓存Cache来提高响应速度
  • 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
  • 浏览器即可作为客户端,简化软件需求
  • 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
  • 不需要额外的资源发现机制
  • 在软件技术演进中的长期的兼容性更好

实现

  • Ruby on Rails1.2以后的版本支持REST model。
  • JBoss RESTEasyJBoss的REST实现

参考资料

  • http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Roy Fielding的博士论文《Architectural Styles and the Design of Network-based Software Architectures》
  • http://www.xml.com/pub/a/2002/02/06/rest.html 第二代web服务,Paul Prescod。
  1. ^ Richardson, Leonard; Ruby, Sam, RESTful Web Services, O'Reilly. 2007 ((May 8, 2007)), ISBN 0596529260
  2. ^ Elkstein, M. What is REST?. Retrieved on 2009-07-04.

转载于:https://www.cnblogs.com/ac1985482/archive/2013/02/25/2932270.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序猿专属成语 get√

全世界只有3.14 % 的人关注了数据与算法之美成语简直是中华文化底蕴一大精华&#xff0c;当程序员和成语联系上了&#xff0c;就有了下面这些火的不行的新兴成语。你还知道哪些关于程序猿的成语&#xff0c;欢迎留言分享。版权归原作者所有&#xff0c;转载仅供学习使用&#x…

哼!看你能坚持多久

21在行为心理学中&#xff0c;人们把一个人的新习惯或理念的形成并得以巩固至少需要21天的现象&#xff0c;称之为21天效应。今天一数&#xff0c;好巧&#xff01;居然我的公众号已经连续发布了21天&#xff08;本文是第22天&#xff09;。仅以此文记录第21天&#xff0c;与大…

.NET 6 新特性 Parallel ForEachAsync

.NET 6 新特性 Parallel ForEachAsyncIntro在 .NET 6 中有一个 API Parallel.ForEachAsync 在官方的博客中一直被忽略&#xff0c;但是我觉得这个 API 非常的实用&#xff0c;类似于同步版本的 Parallel.ForEach&#xff0c;可以比较高效地控制多个异步任务的并行度。之前的版本…

使用remi安装php70,Linux下使用yum安装LNMP环境

如何使用yum搭建有需求的LNMP环境本人使用的是centos7系统&#xff0c;就以centos7的系统搭建为例Nginx安装创建/编辑文件&#xff1a;vi /etc/yum.repos.d/nginx.repo编辑内容&#xff1a;OS代表系统 OSRELEASE 代表系统版本号[nginx]namenginx repobaseurlhttp://nginx.org/p…

住宅按套内面积算,医院人脸识别黄牛,DNA碱基对可能会扩充,菜鸟发布供应链系统,猪瘟不影响食品安全,这就是今天的大新闻...

今天是2月23日农历正月十九今天的我瑟瑟发抖真想要打火锅下面是今天的大新闻住建部新规&#xff1a;住宅按套内面积算&#xff08;中国新闻网&#xff09;“住宅建筑应以套内使用面积进行交易。”住房和城乡建设部公布的一项新规征求意见稿显示&#xff0c;房地产交易将正式告别…

mac中的放置java类库扩展的位置

2019独角兽企业重金招聘Python工程师标准>>> /Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext 转载于:https://my.oschina.net/zhangdapeng89/blog/110538

WPF实现用户头像裁剪

WPF开发者QQ群&#xff1a; 340500857 前言需要做一个用户选择头像并进行裁剪。欢迎转发、分享、点赞&#xff0c;谢谢大家~。 效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、MainWindow.xaml代码如下&#xff1a;<Grid><Border x:Name&qu…

php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友

弈城围棋讯 4月29日&#xff0c;DEEPZEN仍然不知疲倦的在弈城迎战各路高手。总体来讲&#xff0c;“狗狗”战绩非常优秀&#xff0c;截止今天凌晨为止&#xff0c;它的战绩为254胜43负&#xff0c;胜率为85.5%&#xff0c;强悍的一塌糊涂&#xff0c;但是&#xff0c;“狗狗”也…

专为小机械迷而造,培养STEM思维,千万别错过!物理机械力学知识边玩边学,5岁以上请入手...

▲数据汪特别推荐点击上图进入玩酷屋自从美国前总统奥巴马先生上任后对STEM教育理念重视提升到新的层次&#xff0c;全球掀起了一波又一波的STEM教育狂潮。北上广深等中小学开设STEM课程。全国《义务教育小学科学课程标准》加强综合科技知识项目&#xff0c;将力学类科技知识学…

fusioncharts同一页面显示2个仪表盘,且以java字符串作为xml数据

为什么80%的码农都做不了架构师&#xff1f;>>> fusioncharts同一页面显示2个仪表盘&#xff0c;且以java字符串作为xml数据 <% page contentType"text/html; charsetUTF-8" %> <%String path request.getContextPath(); %> <%String x…

读书 | 一切红利最终都是趋势红利

【读书总结】| 总结/Edison Zhou在去年年底就读完了刘润老师2016年出版的《趋势红利》&#xff0c;一直没有来得及做笔记整理&#xff0c;于是&#xff0c;这就来了。1所有红利最终都是趋势红利中国的企业近年来所处的环境正在发生系统性巨变&#xff0c;企业想要成功应变&…

oracle归档日志的概念,浅谈Oracle归档日志

什么是归档日志归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全…

好强大的仿生机械,这才是真正的黑科技!

全世界只有3.14 % 的人关注了数据与算法之美仿生机械就是模仿生物的形态、结构和控制原理设计制造出的功能更集中、效率更高并具有生物特征的机械。研究仿生机械的学科称为仿生机械学&#xff0c;它是20世纪60年代末期由生物学、生物力学、医学、机械工程、控制论和电子技术等学…

windows phone 8 的新特性

2019独角兽企业重金招聘Python工程师标准>>> windows phone 8 是微软windows phone系列操作系统的一次重大升级&#xff0c;在原有的基础上添加了许多新的特性。总体看来主要八中新的特性。&#xff08;Windows phone8 缩写WP8&#xff09; <1>硬件的升级 W…

oracle 数字处理函数,Oracle函数-单行函数-数字、日期、日期处理函数

函数的分类单行函数&#xff1a;一个input对应一个output&#xff0c;input和output存在一一对应的关系 如lower组函数&#xff1a;多个input&#xff0c;但是只对应一个output。如 sum()单行函数特点&#xff1a;每行返回一个结果&#xff0c;输入输出存在一一对应的关系能嵌套…

WPF 修改(优化)Menu菜单的样式

Menu菜单&#xff0c;在软件中使用率很高的一个控件。包含具有层级关系的一个或多个MenuItem作为子菜单。今天就来分享一个定义的菜单样式。看一下效果图&#xff1a;下面就来看看代码&#xff1a;本次代码&#xff0c;全部都在MainWindow.xaml内&#xff1a;<Window x:Clas…

世上最牛博士论文是这样的!

全世界只有3.14 % 的人关注了数据与算法之美第五牛博士论文就是在还没答辩之前已经发表在最好的期刊上&#xff0c;而且鉴于论文很长&#xff0c;该期刊必须像小说一样连载。实例&#xff1a;张五常博士论文《佃农理论》&#xff0c;当年在《法和经济学杂志》上连载四期。第四牛…

grep和egrep的一些简单用法

首先介绍grep的一些常见用法&#xff1a; grep&#xff1a;根据模式搜索文本&#xff0c;并将符合模式的文本行显示出来。 其基本格式为&#xff1a;grep [options] PATTERN [FILE...] 即&#xff1a;grep [选项] 匹配模式 [文件...]&#xff1b;其中&#xff0c;中括号表示该选…

WPF显示富文本emoji表情+文本(类似微信)

祝大家端午节安康&#xff01;WPF开发者QQ群&#xff1a; 340500857 前言 有小伙伴需要实现类似微信一样的气泡聊天emoji表情文本。欢迎转发、分享、点赞&#xff0c;谢谢大家~。 效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、EmojiAndTextControl…

oracle未找到时区,Oracle ADF 未找到时区错误

最近在运行项目的时候,发现了一个问题.在初始化数据的时候,后台会报错,<_handleexception> ADF_FACES-60098:Faces 生命周期在阶段RENDER_RESPONSE 6中接收到未处理的异常错误oracle.jbo.JboException: JBO-29000: 捕获到意外的异常错误: java.sql.SQLDataException, msg…