问题

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

回答
想象一下,我们想让电脑之间能够互相“说话”,就像人与人之间聊天一样。REST 就是一种非常流行、非常有效的方式,让这些电脑(或者更准确地说,是运行在电脑上的程序)能够轻松地沟通。

咱们先从“REST”本身说起。你可以把它想象成一套大家心照不宣的“潜规则”或者“习惯”。当我们要设计一个系统,让它能够被别人访问,并且能够提供数据或者服务的时候,我们就可以遵循这套潜规则。它本身不是一种具体的技术,更像是一种设计思想,指导我们怎么去组织和设计这些“说话”的规则。

REST 的核心思想其实很简单:一切皆资源。这话听起来有点抽象,咱们把它具体化。比如,你想在网上查一本小说。那么,这本书本身,或者说这本书的“信息”(比如书名、作者、内容摘要),就是一个“资源”。你想在网上买一件衣服,那件衣服,或者说它的“信息”(比如图片、价格、尺码),也是一个“资源”。

有了“资源”这个概念,接下来就要想办法“访问”这些资源。怎么访问呢?REST 借用了互联网上最基本、最常用的那几招:HTTP 协议。

你平时上网,打开一个网页,输入网址,回车,浏览器就会发送一个请求到服务器,然后服务器会把网页的内容“吐”出来给你看。这个过程就是利用了 HTTP。REST 呢,就把这个 HTTP 协议用得非常“地道”,非常有讲究。

HTTP 有几个常见的“动词”,就像我们说话时的动作一样:

GET:就像你去问别人“有什么?”。你用 GET 请求一个资源,就像问服务器“请给我这本书的信息”。
POST:就像你去“提交”或者“发送”东西。你用 POST 请求,比如你想在网上留言,或者提交一个订单,就是把你的信息“发送”给服务器。
PUT:这个有点像“更新”或者“替换”。如果你想修改一本书的信息(比如编辑了内容),就可以用 PUT 去“替换”掉旧的信息。
DELETE:这个就更直接了,就像“删除”。你想把一本书从网上“下架”,就可以用 DELETE 请求。

REST 的厉害之处在于,它把这些 HTTP 的动词用得非常有规律,而且不依赖于特定平台或语言。也就是说,不管你是用 Python 写的服务器,还是用 Java 写的,只要你遵循 REST 的规则,其他任何语言写的程序都能很容易地访问你的服务。这就像大家都会说英语一样,虽然说法各异,但基本意思都能懂。

那么,什么又是 RESTful 呢?

“RESTful” 这个词,你可以理解为“像 REST 那样做的”或者“符合 REST 规范的”。 如果一个系统(比如一个网站的后台服务)的设计和实现,都严格遵循了 REST 的思想和规则,我们就说它是 RESTful 的。

一个 RESTful 的系统,会有一些明显的特点,咱们可以这么理解:

首先,它会把每一个可以被访问的东西都看作一个资源,并且为这些资源分配一个独一无二的地址,这个地址就像是资源的“家门牌号”。 通常,这些地址会以 URL 的形式出现,比如 `http://www.example.com/books/123`,这里的 `123` 可能就是一本书的唯一标识。

其次,它会用 HTTP 的方法(GET, POST, PUT, DELETE)来对这些资源进行操作。比如,你访问 `http://www.example.com/books/123`,如果用 GET,就是获取这本书的信息;如果用 POST,可能就是提交一本新书的信息。

再者,当服务器响应请求时,它会返回一种“代表”这个资源的状态。 这个“状态”通常会以一种通用的数据格式来呈现,最常见的就是 JSON 或者 XML。 想象一下,你问服务器要一本书的信息,它不会给你一本实体书,而是给你一份“书的介绍卡片”,上面写满了书名、作者、内容等信息。JSON 和 XML 就是这种“介绍卡片”的格式。

最后,RESTful 的设计还讲究无状态(Stateless)。 这句话的意思是,服务器在处理你发来的每一个请求时,都不会“记住”你之前做过什么。每一次请求都应该包含所有必要的信息,让服务器能够独立完成。 就像你去餐厅点餐,服务员不会因为你上次点过什么就记住你,他每次都需要你完整地说出你要点什么。这样做的好处是,服务器更容易扩展,也更不容易出错。

总的来说,REST 是一种关于如何设计网络服务的思想,而 RESTful 就是遵循了这些思想的系统。它们让电脑之间的沟通变得更像人们的日常对话:有明确的“对象”(资源),有明确的“动作”(HTTP 方法),而且沟通的语言(JSON/XML)也是大家都能理解的。这使得构建各种互联网应用(比如你手机上的各种 App 与服务器之间的通信)变得更加高效、灵活和易于管理。

网友意见

user avatar

有朋友说好象跟自己定义的URL接口什么区别啊.大部分回答是抄来抄去没有直接解答这个直击要害的问题.

为什么REST这么流行,就是定义一套规范的URL接口定义?

REST怎么定义有大量文章.他的优点在几个领域火了后才完整的体现出来.


一.REST有详细清晰的理论定义,这样所有后端编程语言都能很轻易实现这个接口不需要重复造轮子,这样开发快

二.另外在客户端各个平台也是相应的REST库,这样移动端(Android/iOS)与Web端共享一套REST接口.大大节约开发成本

三.服务端变成越来越复杂,一个后台服务往往变成多个主机的同时为你服务,这样某个主机的REST接口也能被另一个主机使用. 这样主机通讯采用REST.现在大火微服务之间往往采用REST接口居多.

user avatar

就是用URL定位资源,用HTTP描述操作。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有