文档章节

REST概述

Joey_T
 Joey_T
发布于 2015/10/10 10:44
字数 494
阅读 189
收藏 0

REST概述

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

五条关键原则
  • 为所有“事物”定义ID
  • 将所有事物链接在一起
  • 使用标准方法
  • 资源多重表述
  • 无状态通信

为所有“事物”定义ID

每个事物都应该是可标识的,都应该拥有一个明显的ID——在Web中,代表ID的统一概念是:URI。URI构成了一个全局命名空间,使用URI标识你的关键资源意味着它们获得了一个唯一、全局的ID。

标识所有值得标识的事物,领会这个观念可以进一步引导你创造出在传统的应用程序设计中不常见的资源:一个流程或者流程步骤、一次销售、一次谈判、一份报价请求——这都是应该被标识的事物的示例。

http://example.com/customers/1234

http://example.com/orders/2007/10/776654

http://example.com/products/4554

http://example.com/processes/salary-increase-234

将所有事物链接在一起

任何可能的情况下,使用链接指引可以被标识的事物(资源)。也正是超链接造就了现在的Web。

使用标准方法

为使客户端程序能与你的资源相互协作,资源应该正确地实现默认的应用协议(HTTP),也就是使用标准的GET、PUT、POST和DELETE方法。

资源多重表述

针对不同的需求提供资源多重表述。

无状态通信

服务器端不能保持除了单次请求之外的,任何与其通信的客户端的通信状态。这样做的最直接的理由就是可伸缩性—— 如果服务器需要保持客户端状态,那么大量的客户端交互会严重影响服务器的内存可用空间(footprint)。

© 著作权归作者所有

共有 人打赏支持
上一篇: UML类图
下一篇: Spring事务传播
Joey_T
粉丝 1
博文 44
码字总数 22290
作品 0
徐汇
程序员
私信 提问
基于SOA 思想下的WebService实战资料分享

跟大家分享基于SOA 思想下的WebService实战(电子商务需求,分析,架构全涉及,百万数据优化) 课程讲解内容涵盖: 第1章 CXF框架快速起步(2课时) Webservice技术规则 Java-WebService技术规范...

abcfhl
2013/06/24
1K
7
REST 的一些思考

概述 REST 全称是 Representational State Transfer,直译就是「表达式状态转移」,是一种架构的约束和规范,满足这些约束和规范的,我们称之为 RESTful 的。 关键原则 为一切资源定义ID 分层...

JNG
2017/04/11
0
0
[勾勒一个自己的搜索引擎]ES3索引映射

概述 搜索引擎应该同时支持精确搜索与全文搜索两种模式。精确搜索是指当文档指定字段的内容与关键字完全相等时,才会将文档作为结果返回;全文搜索的意思是只要文档中的内容包含关键字或近似...

为为02
2017/10/25
0
0
Yii2 使用 RESTful 写API接口 实例

Yii2使用RESTful?其实Yii2框架本身就对RESTful是友好支持的,具体可以看官方文档(http://www.yiichina.com/doc/guide/2.0/rest-quick-start),或者去看源码,都是可以的注意:我们使用resTf...

小田天
2016/11/19
28
0
Extjs学习(2):数据打包

概述 主要运用的包含3个类:Ext.data.Model,Store,Ext.data.proxy.Proxy 2. Model:一组字段和相关的业务逻辑 1)概述 Ext.data.Model,代表应用实体(如电子商务应用包含Users, Products...

储明城
2016/02/18
19
2

没有更多内容

加载失败,请刷新页面

加载更多

Ruby中的继承、原型、面向对象、访问域

先有类还是先有对象 从鸡蛋悖论解决可以悟到一个道理,不要从常识上假设非此即彼和绝对静止。 Ruby中的类和对象正是这么个东西 我们创建一个类,那它就是Class这个对象的实例,而Class,于是...

可数局部基
46分钟前
3
0
什么时候使用字节流、什么时候使用字符流,二者的区别

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 InputStream 和OutputStream,...

watermelon11
今天
6
0
Alpakka Kafka,反应式Kafka客户端

Alpakka Kafka 是一个要用于 Java 和 Scala 语言的开源的流感知和反应式集成数据线项目。它建立在 Akka Stream之上,提供了 DSL 来支持反应式和流式编程,内置回压功能。Akka Streams 是 Re...

羊八井
今天
5
0
PHP7源码编译安装详解

$ yum groupinstall "development tools"$ yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype \freetype-devel libpng libpng-devel libxml2 ......

问题终结者
今天
5
0
Django学习笔记-从创建虚拟环境到启用服务

1 前置条件 windows系统下,目前已经完成anaconda3或miniconda3的安装,这也意味着已经完成了python3的安装。 2 创建虚拟环境 1、通过Anaconda Prompt,使用conda命令创建虚拟环境(base) e...

davidwbnu
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部