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

它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

五条关键原则列举如下:
1.为所有“事物”定义ID
在Web中,代表ID的统一概念是:URI。URI构成了一个全局命名空间,使用URI标识你的关键资源意味着它们获得了一个唯一、全局的ID。
标识所有值得标识的事物,领会这个观念可以进一步引导你创造出在传统的应用程序设计中不常见的资源:
一个流程或者流程步骤、一次销售、一次谈判、一份报价请求——这都是应该被标识的事物的示例。同样,这也会导致创建比非RESTful设计更多的持久化实体。
对此原则总结如下:使用URI标识所有值得标识的事物,特别是应用中提供的所有“高级”资源,无论这些资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等。

2.将所有事物链接在一起
正式描述:“超媒体被当作应用状态引擎(Hypermedia as the engine of application state)”。这个描述的核心是超媒体概念,换句话说:是链接的思想。
超媒体原则还有一个更重要的方面——应用“状态”。
简而言之,实际上服务器端(如果你愿意,也可以叫服务提供者)为客户端(服务消费者)提供一组链接,使客户端能通过链接将应用从一个状态改变为另一个状态。
只需要记住:链接是构成动态应用的非常有效的方式。
对此原则总结如下:任何可能的情况下,使用链接指引可以被标识的事物(资源)。也正是超链接造就了现在的Web。

3.使用标准方法
在前两个原则的讨论中暗含着一个假设:接收URI的应用程序可以通过URI明确地做一些有意义的事情。
在HTTP中这被叫做动词(verb),除了两个大家熟知的(GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS。
你可以依此使用GET方法检索一个表述(representation)——也就是对资源的描述。
GET方法具有幂等性[译注:指多个相同请求返回相同的结果]
幂等性同样适用于PUT(基本的含义是“更新资源数据,如果资源不存在的话,则根据此URI创建一个新的资源”)和DELETE(你完全可以一遍又一遍地操作它,直到得出结论——删除不存在的东西没有任何问题)方法。
POST方法,通常表示“创建一个新资源”,也能被用于调用任意过程,因而它既不安全也不具有幂等性。
总结如下:为使客户端程序能与你的资源相互协作,资源应该正确地实现默认的应用协议(HTTP),也就是使用标准的GET、PUT、POST和DELETE方法。

4.资源多重表述
资源多重表述还有着其它重要的好处:如果你为你的资源提供HTML和XML两种表述方式,那这些资源不仅可以被你的应用所用,还可以被任意标准Web浏览器所用。
总结:针对不同的需求提供资源多重表述。

5.无状态通信
虽然REST包含无状态性(statelessness)的观念,但这并不是说暴露功能的应用不能有状态。
服务器端不能保持除了单次请求之外的,任何与其通信的客户端的通信状态。
这样做的最直接的理由就是可伸缩性—— 如果服务器需要保持客户端状态,那么大量的客户端交互会严重影响服务器的内存可用空间(footprint)。

REST(Representational State Transfer)简介相关推荐

  1. 微服务——REST(Representational State Transfer,表述性状态转移)

    面试造飞机系列:看架构师如何设计微服务接口 REST(Representational State Transfer,表述性状态转移) 是一种软件架构风格.REST提出了一组架构约束条件和原则,任何满 ...

  2. REST(Representational State Transfer):表述性状态转移

    REST(Representational State Transfer):表述性状态转移概念:REST是一种跨平台.跨语言的架构风格.1)在REST架构风格中,对象被抽象为一种资源,表述性状态是指( ...

  3. REST(Representational State Transfer表述性状态转移)

    http://zh.wikipedia.org/zh-cn/REST REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降 ...

  4. RESTful Representational State Transfer 表现层状态转化

    说说WCF Rest [WCF REST] 一个简单的REST服务实例 RESTful 一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基 ...

  5. 关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题

    我使用基于版本 3.4.5(某客户正在使用)的 Schematics 创建了一个店面,并在 SSR 模式下运行它. 我在浏览器中访问 http://localhost:4000/. 通过 Chrome ...

  6. REST设计模式简介

    转载自:http://www.cnblogs.com/loveis715/p/4669091.html REST简介 一说到REST,我想大家的第一反应就是"啊,就是那种前后台通信方式.&q ...

  7. REST风格笔记【简介篇】

    RSET简介 REST(Representational State Transfer),表现形式状态转换. REST书写方式比较节俭,其隐藏了资源的访问行为,我们无法通过地址得知对资源是何种操作. ...

  8. DreamFactory入门指南 - 第1章REST和DreamFactory简介

    DreamFactory入门指南 - 第1章REST和DreamFactory简介 无论您在当今的IT行业中扮演什么角色,API都是工作中不可或缺的一部分.营销人员定期将Salesforce,Pipe ...

  9. SpringBoot HATEOAS用法简介(入门)

    REST风格简介 介绍HATEOAS之前先简单介绍一下REST,REST 是 Representational state transfer 的缩写,翻译过来的意思是表达性状态转换.REST是一种架构 ...

最新文章

  1. Attention is all your need 谷歌的超强特征提取网络——Transformer
  2. html文件显示不了box,Workbox.js registerNavigationRoute找不到/加载html文件
  3. 设计模式系列8--策略模式
  4. JavaScript之function类型
  5. 性别分析--微信数据分析(一)
  6. 编码调试:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 12: illegal multibyte sequen
  7. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据
  8. 电脑常用音频剪辑软件_5款好用的音频剪辑软件推荐
  9. 拒绝“佛系”程序员!
  10. servlet 返回可访问文件_Servlet第二篇「Servlet细节、ServletConfig、ServletContext」
  11. SQL 基础之单行函数(七)
  12. IDA远程调试Android中so文件
  13. 未能正确加载包“Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage
  14. Illustrator中文版教程,如何在 Illustrator 中使用不透明度和混合模式?
  15. html文档元素两部分,html元素
  16. matplotlib多张子图画在一起
  17. VUE输入 身份证 号,获取出生年月日
  18. 华三交换机升级的ipe文件_H3C交换机升级步骤
  19. 解决移动端滑动方向相反
  20. 计算机控制台win10,Win10系统打开Windows控制台的方法

热门文章

  1. Mac固定虚拟机IP
  2. onenote报错0XE000078D
  3. LOJ #2048. 「HNOI2016」最小公倍数
  4. ip68级防水可以泡多久_视频亲测!IP68级防水的S7 edge在水下能用吗
  5. windows10 提示系统激活失败,报错为:激活错误0xcc004f012
  6. WindowsServer2016-配置JDK环境
  7. 京东项目之头部和尾部
  8. 紫外线擦除器使用方法_紫外线擦除器DIY自制
  9. Android属性动画 Keyframe
  10. 一个实施工程师的自我修养