初识Restful架构

初识Restful架构

起源

REST这个词,是Roy Thomas Fielding在他2000年的博士论文《Architectural Styles and
the Design of Network-based Software Architectures》
中提出的。

《CHAPTER 5 Representational State Transfer (REST)》是REST的章节。

这里写图片描述

名称讲解

REST(REpresentational State Transfer):State Transfer 为”状态转移”,Representational 中文有人翻译为”表征”、”具象”,合起来就是 “表现状态转化。不过,一般文章或技术文件都比较不会使用翻译后的中文来撰写,而是直接引用 REST 或 RESTful 来代表。

从论文标题来看,REST是一种以网络 (Network-based) 为基础的架构样式 (Architectural Styles) 与软件架构 (Software Architectures)。

REST谈论的是一件非常重要的事:如何正确地使用 Web标准。所以想要了解 REST 最好的方式就是思索与了解 Web 及其工作方式。

REST本身是设计风格、设计理念而不是标准。如果你设计的应用程序能符合 REST 原则,这些符合 REST 原则的 REST 服务可称为 “RESTful web service” 也称 “RESTful Web API”。

资源

REST的名称”表现状态转化”中,省略了主语。”表现”其实指的是资源的表现。

资源就是网络上的一个数据实体,或者说是一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务。你可以用一个URI(统一资源标识符,Uniform Resource Identifier)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

所谓”上网”,就是与互联网上一系列的”资源”互动,调用它的URI。

回想,你如何连上我的博客,你可能通过浏览器直接输入 http://blog.csdn.net/u013007900 此域名来到达首页,也能用书签或网络上的链接,经点击后来连上我的博客。然后,你想看这一篇名为《初识Restful架构》的文章,所以以你接下去点击这文章的标题连结,接去下阅读。我们简易了解一下整个流程:

  1. 通过URL http://blog.csdn.net/u013007900 ,Client向该域名发出请求
  2. http://blog.csdn.net/u013007900 收到请求,发送首页HTML文件(以及CSS、JS等)给Client
  3. Client又点击REST文章连结向http://blog.csdn.net/u013007900发出archive/article/details/79860194的请求,进行跳转
  4. http://blog.csdn.net/u013007900 收到请求,响应REST文章内容给Client

对于客户端而言, Client的通过URI来获取资源的具体表现(Representational)。Client取得这些具体象征使这些应用程序转变其状态(以浏览器而言,取得HTML、CSS、JavaScript…来生成界面),随着不断取得资源的具体表现,Client端不断地改变其状态,这样不断的反复(iterations)过程就是所谓的Representational State Transfer。

对于服务器而言,由于互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。客户端的状态其实是由服务器的状态决定的。

如果客户端想要操作服务器,必须通过某种手段,让服务器端发生”状态转化”(State Transfer),这种转化是建立在资源的变化上的,所以就是”表现状态转化”。通常而言,客户端用到的手段是HTTP协议(如果有不了解的地方可以查看这篇说明)。如:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

综合上面的解释,我们总结一下什么是RESTful架构:

  1. 每一个URI代表一种资源;
  2. 客户端和服务器之间,传递这种资源的某种表现层;
  3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

为什么要用RESTful结构

我们先讲解一下什么是API(Application Programming Interface,应用编程程序接口)。在实际中大概就是,比如一些大公司,腾讯啊,阿里啊,豆瓣啊,他们可以提供游戏诶API,然后其他人可以编一个程序和这些接口API进行交互。比如,豆瓣的爬虫API啊,比如网易云使用微博的API,使得用户能分享到微博。这就是这些软件和微博的API进行了交互。

之前提到了,Restful就是设计这些API的风格,比如,腾讯设计这些API的时候,需要遵守一定的规则。

这样做的好处是什么呢?

大家都知道”古代”网页是前端后端融在一起的,比如之前的PHP,JSP等。

在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,使用RESTful架构可以通过一套统一的接口为 Web,iOS和Android等多种平台提供服务。

对于广大平台来说Restful架构能够更加广泛地被应用,让他们的工作量减少,同时也让用户更方便。在RESTful架构下:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013007900/article/details/79862727