概述

REST全称是Representational State Transfer,中文意思是表现层状态转换
它首次出现在2000年Roy Fielding博士论文中。他在论文中提到:”我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构“ 。
如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

RESTful系统的优势在于高伸缩性和高灵活性。因为被访问和操作的资源是通过http谓词。资源通过URI被暴露,资源被通过标准的语 法体现,客户端不会被服务器所影响。也就是说,RESTFul系统可以充分体现http的可伸缩性特性,比如:缓存和代理特性。

RESTful Representational State Transfer 表现层状态转化

Representation(资源表现层)

REST的”表现层”其实指的是”资源”(Resources)的”表现层”(Representation)。

  • 所谓”资源”(Resources),就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
  • “资源”是一种信息实体,它可以有多种外在表现形式。我们把”资源”具体呈现出来的形式,叫做它的”表现层”(Representation)
    比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。
    URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的”.html”后缀名是不必要的,因为这个后缀名表示格式,属于”表现层”范畴,而URI应该只代表”资源”的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对”表现层”的描述。

State Transfer(状态转换)

HTTP协议传输是无状态的,所以所有的状态信息都需要保存在服务端。
客户端和服务端的交互过程,就是服务端状态转换的过程。
具体地来说,一般有四种基本动作:GET、POST、PUT、DELETE

GET 用来从服务器获取资源
POST 用来新建资源或者更新资源
PUT 用来更新资源
DELETE 用来删除资源

设计规范

批量删除

Restful风格的API设计中,怎么实现批量删除?

最后

restful风格的url我们可以尽量去遵守,因为它对运维或者监控都非常友好。但是不要一根经,它只是理想情况,有的时候并不满足我们的需求,我们可以变通的看问题。

rest接口的命名规范:

  • API必须有版本的概念,v1, v2, v3 .
  • 使用Token令牌来做用户身份的校验与权限分级,而不是Cookie
  • url中大小写不敏感,不要出现大写字母
  • 使用-而不是使用_做URL路径中字符串连接
    -叫做分词符,Google搜索引擎会把url中出现的-当做空格对待,it-is-crazy会被搜索引擎识别为与“it”,“is”,“crazy”关键词或者他们的组合关键字相关。当用户搜索”it”,“crazy”, “it is crazy”时,很容易检索到这个url,排名靠前。
    _ 这个符号如果出现在url中,会自动被Google忽略,“/it_is_crazy”被识别为与关键词 “itIsCrazy”相关。
  • 有一份漂亮的文档~