1 / 26

REST 分享交流

REST 分享交流. 由来. REST ( Representational state transfer ) 表象化状态转变 或者 表述性状态转移 Roy Fielding 在 2000 年他的博士论文中提出来的一种 软件架构 风格。. 到底是什么. REST 是一种设计风格。它不是一种标准,也不是一种软件,而是一种思想。 REST 通常基于使用 HTTP , URI ,和 XML 以及 HTML 这些现有的广泛流行的协议和标准。. 宗旨. 从资源的角度来观察整个网络

gerd
Download Presentation

REST 分享交流

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. REST分享交流

  2. 由来 • REST(Representational state transfer) 表象化状态转变 或者 表述性状态转移 • Roy Fielding在2000年他的博士论文中提出来的一种软件架构风格。

  3. 到底是什么 • REST是一种设计风格。它不是一种标准,也不是一种软件,而是一种思想。 • REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。

  4. 宗旨 • 从资源的角度来观察整个网络 网络上的所有事物都是资源,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表述。 • REST架构风格以资源为核心进行设计

  5. REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

  6. 架构约束 • 客户端和服务器结构 • 连接协议具有无状态性 • 能够利用Cache机制增进性能 • 统一接口 • 层次化的系统 • Code On Demand按需代码

  7. 一个简单扼要的定义 • REST定义了应该如何正确地使用(这和大多数人的实际使用方式有很大不同)Web标准,例如HTTP和URI。如果你在设计应用程序时能坚持REST原则,那就预示着你将会得到一个使用了优质Web架构的系统。 ----------Stefan Tilkov

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

  9. 为所有资源定义ID • 资源是暴露给外界的接口,资源由URI标识,URI是资源的名词,也是资源在Web上的地址,对资源感兴趣的客户可以通过URI与资源交互。 • 在 REST 的定义中,一个 Web 应用总是使用固定的 URI 向外部世界呈现(或者说暴露)一个资源。 • URI 是英文 Uniform Resource Identifier 的缩写,中文翻译“通用资源标志符”。 • “通用资源标志符”是指唯一标识一个资源(xhtml 文件、图片、css 样式表)的字符串。

  10. 通过 REST 架构,Web 应用程序可以用一致的接口(URI)暴露资源给外部世界,并提供对资源的操作服务。这对于以资源为中心的 Web 应用来说非常重要。例如照片共享网站、用户社区等。

  11. 例子 http://www.jstvu.edu.cn/newslist.php?newsid=1 http://www.jstvu.edu.cn/newslist/1

  12. 将所有资源链接在一起 • 任何可能的情况下,使用链接指引可以被标识的事物(资源) • 例子 <news self="http://www.jstvu.edu.cn/newslist/1"> <image ref=" http://www.jstvu.edu.cn/images/1 "> </image></news>

  13. Why is it called Representational State Transfer? • The Web is comprised of resources. A resource is any item of interest. For example, the Boeing Aircraft Corp may define a 747 resource. Clients may access that resource with this URL: • http://www.boeing.com/aircraft/747 A representation of the resource is returned (e.g., Boeing747.html). The representation places the client application in a state. The result of the client traversing a hyperlink in Boeing747.html is another resource is accessed. The new representation places the client application into yet another state. Thus, the client application changes (transfers) state with each resource representation --> Representational State Transfer!

  14. 使用标准方法 • 如果你在公共汽车上看到一个URI,你可以将它输入浏览器的地址栏中并回车——但是你的浏览器如何知道需要对这个URI做些什么呢? • 它知道如何去处理URI的原因在于所有的资源都支持同样的接口,一套同样的方法(只要你乐意,也可以称为操作)集合。在HTTP中这被叫做动词(verb),除了两个大家熟知的(GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS。

  15. RESTful HTTP方案中的所有资源都继承自类似于这样的一个类: • class Resource • { Resource(URI u); • Response get(); • Response post(Request r); • Response put(Request r); • Response delete(); }

  16. 资源多重表述 • 什么是资源表述?它是一段对于资源在某一个特定时刻的状态描述,资源表述有多种格式,最常见的是HTML/XML/JSON纯文本。

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

  18. 目前的restful框架 • 目前宣称支持REST风格web service的Java框架包括以下这些: • Restlet • Jersey • RESTEasy(JBoss的), • CXF • Spring 3.0也支持REST了, • 还有国人做的一个轻量框架JRest4Guice • Php和python

  19. 理论上的REST • 很多人的理解和原作者有出入 • 并没有明确地区分HTTP、RESTful HTTP和REST • REST在本质上是一个可以被许多不同技术实现的高层次的风格

  20. REST优势 • 使用REST的最佳的场景是对外提供公开的服务,也就是所谓的OpenAPI,也有的人认为RESt更适合资源导向的网站,像youtube这样的网站。 • REST 的真正价值在于 Web Services,而不是通过浏览器操作的应用程序。

  21. 目前restful的web应用 • Google的Gdata • 豆瓣的Open API • Amazon的S3等等都是REST的

  22. 对于课题restful的理解 • http://210.28.216.201:8080/bysj/ themes/wuxi指向毕设系统网站中类型为themes,名字为wuxi的资源。

  23. 我们用浏览器访问这个 URI,这个地址很可能会在服务器内部处理为 http://210.28.216.201:8080/bysj/ themes.jsp?school=wuxi这样的地址。 • 服务器根据 school 参数生成 html 文档返回给浏览器。浏览器看到的将可能是一个 html 文档。

  24. 假设客户端我们要获取的是XML或者Json文档。也就是说我们要获取“同一个资源的不同表现形式的数据”。假设客户端我们要获取的是XML或者Json文档。也就是说我们要获取“同一个资源的不同表现形式的数据”。 • 在 REST 中,不管是获取的 html 文档还是 XML 文档,都是用同一个 URI,就是 http://210.28.216.201:8080/bysj/ themes/wuxi 。

  25. 当我们用浏览器访问一个网址时,浏览器会构造一个 HTTP 请求。这个请求有一个头信息,其中包括了本次请求接受何种类型的数据。

  26. 将用户界面和数据存储分离,提高用户界面跨多个服务平台将用户界面和数据存储分离,提高用户界面跨多个服务平台 • 一个好的架构应该可以很轻松的为不同的请求返回不同格式的数据。

More Related