RESTful是什么

 

一、RESTful是一种API设计思想

 

目前大多数软件都不是单机的,而是客户端/服务器模式,比如网站、APP、小程序等等。

 

REST,即Representational State Transfer的缩写,翻译为"(资源的)表现层状态转化"。

 

如果一个架构符合REST原则,就称它为RESTful架构。

 

1. 资源(Resources)

网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。

用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

 

2. 表现层(Representation)

资源是怎么展示的,

比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

 

3. 状态转化(State Transfer)

客户端通过HTTP协议操作资源的变换。

四种基本操作:

  • GET用来获取资源,
  • POST用来新建资源(也可以用于更新资源),
  • PUT用来更新资源,
  • DELETE用来删除资源。

 

 

二、RESTful架构

  (1)每一个URI代表一种资源;

  (2)客户端和服务器之间,传递这种资源的某种表现层;

  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

 

 

三、举例

1. 网上汇款,从账户1向账户2汇款500元

错误

POST /accounts/1/transfer/500/to/2

正确

POST /transaction HTTP/1.1
Host: 127.0.0.1
  
from=1&to=2&amount=500.00

把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务

 

2. 查询已发布的文章

错误

GET /articles/published

正确

GET /articles?published=true

 

3. 状态信息应该使用正确的

错误

HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": "failure",
  "data": {
    "error": "Expected at least two items in list."
  }
}

正确

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "error": "Invalid payoad.",
  "detail": {
     "surname": "This field is required."
  }
}

 

 

 

四、总结

1. URL中核心是资源的名称

为每个资源设置URI

 

2. 通过HTTP动词表示URL中,对资源的操作

使用HTTP动词:GET POST PUT DELETE

 

3. 服务端返回码符合规范,客户端可以直接知道错误类型

通过XML JSON进行数据传递;

使用HTTP状态码

HTTP 状态码就是一个三位数,分成五个类别。

  • 1xx:相关信息
  • 2xx:操作成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

 

 

 

http://www.ruanyifeng.com/blog/2011/09/restful.html

http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html

 

上一篇:扎心一问:前后端分离开发,RESTful 接口要怎样设计?


下一篇:理解 RESTful API 设计规范