Contents
  1. 1. RESTful架构
    1. 1.1. 什么是REST
    2. 1.2. 资源就是一切 – RESTful API

RESTful架构

什么是REST

RESTful这个词来源于2000年Roy Fielding的博士论文.
(资源)表现层状态转化(Representational State Transfer, REST)是REST的真正意思,这里的资源并未在这个缩写中体现出来,但是资源却是隐含的最核心的一个概念。

  • 资源

    • 资源指的是互联网上的一切信息的实体。互联网上的一切信息都可以看作是一个资源。这个资源是一个具体信息,是数据,我们可以用统一资源定位符(URI)来指向我们想要的资源。但是它的表现形式却是不确定的:同样的信息可以有不同的表现形式,这就是一个资源的表现层
  • 表现层

    • 尽管我们可以用URI来描述一个资源,但是同样的资源同样可以有不同的表现形式,URI指定了一个资源的位置,而如何解析表示一个数据的形式其实是多样的。
  • 状态转化

    • 任何时间下,一个资源都有一个状态,而客户端对于资源的访问总是会引起状态的变化,否则的话互联网上的资源就是永久不变的了。而这种对于资源状态的转化是基于表面层的。也就是,资源先以一种表现层展示出来,然后才进行状态的转化,也就是表现层状态转化。
    • 客户端用于操作资源的方式,也就是http协议,拥有许多的请求方式:GET, POST, PUT, DELETE等等,也就是这些操作真正的实现了对于资源的表现层状态转化。

资源就是一切 – RESTful API

RESTful的精神就是一切都是面向资源的,互联网上的一切操作都是对于资源的CURD,因此首先就是对于资源的描述,也就是URI如何命名:

  • 一个完整的URI由以下部分组成
    • 协议
      • 一般是http或https
    • 主域名
      • 如api.muxixyz.com
    • 版本
      • /v1.0
    • 路径
      • 具体的路径,指向网络上的资源,既可以指向单个的资源,也可以指向资源的集合。指向单个资源时往往加入ID来确定具体的资源。
      • 路径中对于资源的描述都使用名词,因此不应该出现动词
      • 表示集合的时候名词应该使用复数
      • 如/comments, /comments/6

描述完资源之后,一个API还应该包括以下信息:

  • HTTP动词,也就是请求方式
  • QueryString – 过滤信息
    • 其实大家都知道。。就是query string啦
    • 比如:/?page=1
  • HTTP状态码,用于表示操作的结果
    • 有一部分的状态码是已经规定好的,也有很多没有规定好的可以方便开发者自己定义
    • 200 [OK]
    • 401 [Unauthorized]
    • 500 [Internal Server Error]
  • 错误处理
    • 如果出现了错误应当返回错误信息,服务器也应当有相应的日志记录。
Contents
  1. 1. RESTful架构
    1. 1.1. 什么是REST
    2. 1.2. 资源就是一切 – RESTful API