怎样用通俗的语言解释REST,以及RESTful?

怎样用通俗的语言解释REST,以及RESTful?

首先假设西雅图有个男孩叫小明,他是一个科比的粉丝,然后有一天小明想用电脑看科比的生涯集锦视频。他做了如下四步:

在这个活动中,主要涉及到了四个部件:

这大概就是一个传统的电脑软件的架构。现在我们看看如何把这个传统的电脑软件变成RESTful架构的软件。

我们把小明家的电脑主机从小明西雅图搬到加州的圣布鲁罗,而小明的显示器则仍然留在家里。

然后我们把之前连接电脑主机和显示器的“电线”换成“互联网”,并且把四个部件(显示器,主机,视频文件,暴风影音软件)的名字换成:客户端,服务器,资源,浏览器。

为了在茫茫互联网世界中准确快速的找到那台服务器并观看“科比集锦”,我们需要给在加州圣布鲁罗的这台服务器加一个标识符,也就是常说的Url。 同时,为了区分服务器中的“科比集锦”和“麦迪集锦”,我们也需要给这两个视频单独加上标识符。

这个服务器当然不只有科比和麦迪的视频,还有其他千千万万的视频,以及音乐,表单和网页等等东西。服务器上放不下这么多东西,所以需要把这些东西移到数据库里面放着。

这样,整个RESTFul的架构基本上就成型了。我们再来看看小明今天应该如何观看科比的视频。

步骤1. 小明打开浏览器。注意此时小明家中的电脑硬盘里面没有存任何视频,视频存在加州圣布鲁罗的数据库里面。

步骤2.小明输入 http://www.youtube.com/kobehighlight 客户端通过互联网找到http://www.youtube.com的服务器,然后服务器根据kobehighlight在数据库里找到了科比的视频, 并把视频数据通过互联网传回给了小明的客户端。这个操作就是我们常说的GET。

步骤3. 小明开心地观看传回来的视频,但是他不想在视频中看到克雷汤普森。

步骤4. 他通过浏览器剪掉了克雷汤普森的部分,点击了”提交“,然后服务器接到这个请求之后把修改保存到数据库里面,并且告诉小明”你的修改已经保存。这个操作就是我们常说的POST。

我们来对比一下之前的单机软件。

单机软件的文件路径 = REST软件的Url

单机软件的打开操作 = REST软件HTTP的GET

单机软件的保存操作 = REST软件HTTP的POST

那么非REST架构软件(SOAP)和REST架构软件之间的的区别是啥呢?

其实区别就是在于对应的取资源的方式,SOAP用的是自己规定好的格式,而REST用的是大统一的Url格式。所以你想从SOAP软件中存取操作,必须事先知道它的读写格式;而REST,你只需要有一个浏览器就可以了。

这里我尽量使用了”通俗易懂“的方式来解释这个问题,希望能帮到题主。具体当然还有很多细节,但是,这大概就是一个REST软件的样子。