RESTful 架构


定义

REST (Representational State Transfer),中文意思是:表述性状态转移。即一组架构约束条件和原则,如果一个架构符合 REST 的约束条件和原则,我们就称它为 RESTful 架构。

  1. 在 REST 中,一切的内容都被认为是一种资源
  2. 每个资源都由 URI 唯一标识
  3. 使用统一的接口处理资源请求(POST/GET/PUT/DELETE/HEAD)
  4. 无状态(每次请求之前是无关联,没有 session )

REST 可以理解为 Client 和 Server 之间的一种交互方式,即 Client 发出 HTTP 请求,Server 端的资源发生状态转移,例如更新、删除等。而 RESTful API 则可以理解为 Server 端提供具有 REST 风格的接口。

符合 REST 规范的服务不应该保存客户端状态也不会保存应用的状态。

资源和 URI

  1. 使用 / 来表示资源的层级关系
  2. 使用 ? 用来过滤资源
  3. 使用 _ 或者 - 让 URI 的可读性更好
  4. , 或 ; 可以用来表示同级资源的关系

统一资源接口

请求方法 描述
GET 获取某个资源。幂等(取多少次结果都没有变化)
POST 创建一个新的资源
PUT 替换某个已有的资源(更新操作) ,幂等(更新多次只保存一个结果)
DELETE 删除某个资源
HEAD 主要用于确认 URL 的有效性以及资源更新的日期时间等
PATCH 新引入的,对 PUT 方法的补充,用来对已知资源进行局部更新

资源表述

客户端通过 HTTP 方法可以获取资源,确切的来说,客户端获取的只是资源的表述而已,传输的不是资源本身。资源的表述包括数据和描述数据的元数据,例如,HTTP 头 “Content-Type” 就是这样一个元数据属性。客户端可以通过 Accept 头请求一种特定格式的表述,服务端则通过 Content-Type 告诉客户端资源的表述形式。

实践

  1. 将 API 部署在专用域名之下;
  2. 将 API 的版本号放入 URL;
  3. 在 RESTful 架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的 ”集合”(collection),所以 API 中的名词也应该使用复数。
  4. 如果记录数量很多,服务器不可能都将它们返回给用户。API 应该提供参数,过滤返回结果
  5. 服务器向用户返回的状态码和提示信息
http://api.douban.com/v2/book/:id (获取图书信息)
http://api.douban.com/v2/movie/subject/:id (电影条目信息)
http://api.douban.com/v2/music/:id (获取音乐信息)
http://api.douban.com/v2/event/:id (获取同城活动)

文章作者: pancx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 pancx !
评论
 本篇
RESTful 架构 RESTful 架构
本文全面阐述了REST(表述性状态转移)架构的核心概念和设计原则。REST是一种以资源为中心的Web服务架构风格,强调通过统一的接口(GET、POST、PUT、DELETE等)来管理和交互资源。
下一篇 
参数表示方法及语法约定 参数表示方法及语法约定
本文档提供了技术文档中常用的参数表示方法和语法约定。这些符号帮助用户理解命令行工具、SQL查询和编程接口的正确用法。
  目录