什么是REST

REST是表现层状态迁移(REpresentational State Transfer)的缩写。但它省略了主语资源(Resources),所以全称是资源表现层状态迁移(Resources Representational State Transfer)。

  • 资源(Resources)
    所谓资源指的是网络上的实体,或者说网络上的一个资源,它可以是一段文本,音频,视频,图片,或者一种服务。你可以用URI(Uniform Resource Identifer)来找到它,每个网络上的资源都有唯一的URI与之对应。
  • 表现层(Representation)
    资源是一种信息实体,它可以有多表现形式,如XML,HTML,JSON,TXT 甚至是二进制流。URI只代表资源实体,不包含它的表现形式。许多web请求后面有个后缀如“.html”,这其实是不必要的,它属于表现层范畴。URI应该只代表资源的位置,具体的表现形式可以在HTTP请求头部信息中ACCEPT和CONTENT-TYPE字段指定的。
  • 状态迁移(State Transfer)
    Http协议本身是无状态的互联网通信协议。对资源的增删等操作, 可以理解为资源状态的迁移。REST风格的架构,充分利用了HTTP协议中的Method,通过POST,GET,DELETE 等对资源进行访问,修改。Http MethodREST通过Http Method 实现对资源的不同操作。
  • POST 新增
  • PUT 整体更新
  • GET 查询
  • DELETE 删除
  • PATCH 部分更新

REST并不是一个严格的协议或者架构,它只是一种架构风格,所以在很多实现细节方面并没有统一的标准。而本质上,我认为REST更好的利用Http协议,而不是仅仅把它当作一个底层传输协议。它用http method来表达对资源的具体操作,用http中accept字段来表达对服务器返回数据格式的期望。这样使得URI更加的简洁,更具有自我解释性。

实现REST

REST 只是一种架构风格,所以并没有统一的实现标准,但有一些约束来判断一个服务是否是REST风格。

  • 客户端服务器分离
  • 无状态
  • 缓存
  • 分层系统
  • 统一接口

REST的优点

  • 更简洁的URI
  • 更好的伸缩性