如何理解REST/RESTful API

最后编辑于 2019-10-07

什么是REST/RESTful?

REST起源于Roy Fielding在2000年发表的博士论文

REST的意思是REpresentational State Transfer,中文意思为表现层状态转移

首先要明白两个概念:

客户端:此时你在读这篇文章,你就请求获取了服务器上的这篇文章(资源),此时你的浏览器就是一个客户端

资源:资源可以是任何能够提供信息的东西:图片/文字等等等等,每个资源都有一个特定的标识符,通过这个标识符可以唯一指定一个资源

想象一下,将网页视为一个状态机,不同的网页状态视为状态机里的不同状态,通过RESTful服务就可以使你的网页对资源进行不同的操作:注册账号(新建资源)、请求页面(请求资源)、删除(删除资源)

REST不是一种协议,它是一种架构/规范,它通过约束你的API设计来使你的API变成RESTful API,RESTful,即按"REST"架构设计的服务

开发者们可以根据REST的约束来设计自己的API,来提供RESTful服务。

值得注意的是,并不只有HTTP协议才能构建RESTful服务,只是HTTP协议与REST架构能很好地协作,很适合将HTTP服务设计为RESTful服务,而非HTTP协议也可以用来构建RESTful服务。

调用RESTful API时,有两个东西决定了它的作用:

标识符:指定了操作的资源

表示操作的HTTP方法/动作:指定了对资源进行的操作

比如请求我的GITHUB主页:https://github.com/tomial,就使用了我的用户名作为标识符,GET方法作为对应的操作

设计RESTful API

REST规定了6种约束:

  • Uniform interface
  • Client — server separation
  • Stateless
  • Layered system
  • Cacheable
  • Code-on-demand

Uniform interface

参考:

What is a RESTful API? –lazlojuly

What is REST — A Simple Explanation for Beginners, Part 1: Introduction – Shif Ben Avraham