存档

文章标签 ‘web’

什么是 REST

2017/04/05 5,013

1 REST的概念

Roy Thomas Fielding 博士在2000年 发表了论文 Architectural Styles and the Design of Network-based Software Architectures (《架构风格与基于网络的软件架构设计》) 。在这篇论文中,首次系统地阐述了 REST 的架构风格和设计思想。REST,全称为(Resource) Representational State Thransfer ,常见的翻译为"表现层状态转移",它省略了主语:资源。通俗来讲,即资源在网络中以某种表现形式进行状态转移。

  • Resource: 资源,即数据。泛指 Web 上一切可以识别、命名、可访问或处理的实体,如 HTTPPage,音频文件等。使用统一资源定位符指(URI)向资源.
  • Representational:某种表现形式。如 JSON,XML,二进制流等
  • State Transfer: 状态变化。通过 HTTP 动词实现。

在互联网发展的早期,网页的前后端是融合在一起的,如JSP,PHP.互联网发展的今天,客户端硬件设备层出不穷,而不同的Client又需要展示相同的商业逻辑。REST 接口可以为为不同的设备提供一套统一的接口。

简单来说, REST 即为: 使用URL定位资源,使用HTTP原语描述操作

HTTP原语,指 HTTP提供的原始方法,如 GET\POST\DELETE\HEAD etc

2 RESTful设计风格

RESTful 不是架构,而是一种架构风格,它提供了一些设计原则和约束条件。 REST 架构风格最重要的约束有:

  1. C/S架构。 Client/Server 架构形式提供了基本的分布式,客户端发走请求,服务端响应可拒绝请求。使用 HTTP Status Code 传递 Server 状态信息,如果出错则返回错误信息,则客户端处理异常。
  2. 无状态。通信的传话状态应该全部由客户端维护。即请求中应该包括全部的必要信息。
  3. 缓存。无状态不胜表示可能出现重复的请求。事实上有些请求只需要第一次完成执行,其余次请求皆可以享用这次请求的成果。缓存可以抵消一部分无状态带来的影响。
  4. 统一接口。这意味着每一个REST应用都共享一种能用架构。
  5. 分层系统:将系统划分为几个部分,每个部分负责单一职责。然后通过上层对下层的依赖和调用组成一个完成的系统。通常将系统划分为:应用层、服务层、数据访问层。

如果一个架构满足 REST 原则 ,那么就可以称它为 RESTful 架构。

API 发布之后,就很难再修改。所以在设计API时需要遵循一定规范,且又需要灵活友好。
继续阅读