什么是 RESTful ?
REST这个词由 Roy Thomas Fielding 在他2000年的博士论文中提出。全称是 Representational State Transfer ,这个词省略了主语 Resource,因此翻译成中文是:资源表述性状态转化。
资源(Resource)
之前在 HTTP之旅 一文中提到过,一个 Web 页面包含了很多对象,这些对象可以是 html ,可以是 JSON、XML,或者可以是图片、嵌入的视频,还可以是java小程序等等。这些对象都可以称为资源。我们通过 统一资源定位符(URI)
去定位资源。
表述性(REpresentational)
正如上面提到的,资源可以用各种形式来进行表述,我们可以使用最适合资源使用者的任意形式来表述资源。资源具体呈现出来的形式,就是资源的表述性(REpresentational)。
状态转化(State Transfer)
HTTP协议是无状态协议。这意味着,资源的所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生”状态转化”(State Transfer)。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
简单总结:资源通过 URL 进行识别和定位,然后通过行为(即 HTTP 方法)来定义应该完成怎样的功能。