REST 概述

REST 表示REpresentational State Transfer ,并通过创造罗伊菲尔丁在他的博士论文的建筑风格和基于网络的软件架构的设计 。在其中,他确定了具体的建筑原则,如:

  • 可寻址资源:REST 中信息和数据的关键抽象是一种资源,每个资源必须通过 URI 进行寻址。

  • 统一的,受约束的界面:使用一小组明确定义的方法来操作我们的资源。

  • 面向表示:一个 URI 引用的资源可以有不同的格式,不同的平台需要不同的格式,例如浏览器需要 HTML,JavaScript 需要 JSON 和 Java 应用程序可能需要 XML,JSON,CSV,文本等。所以我们与服务交互使用该服务的表示。

  • 无状态沟通:无状态应用程序更容易扩展。

  • 超媒体作为应用程序状态引擎:让我们的数据格式驱动应用程序中的状态转换。

这些架构原则的集合称为 REST。REST 的概念受到 HTTP 的启发。向我们提供 REST 的 Roy Fielding 也是 HTTP 规范的作者之一。

Web 服务和 RESTful Web 服务是暴露于 Internet 以进行编程访问的服务。它们是在线 api,我们可以从我们的代码中调用它。有两种类型的 Web 服务 SOAP 和 REST Web 服务。

RESTful Web 服务 :通过应用 REST 体系结构概念编写的 Web 服务称为 RESTful Web 服务,它关注系统资源以及如何通过 HTTP 协议将资源状态传输到不同的客户端。

本文档仅关注 RESTful Web 服务,因此我们不会深入了解 SOAP WS 的细节。

设计 RESTful Web 服务时没有严格的规则

  • 没有协议标准
  • 没有通信渠道标准
  • 没有服务定义标准

但 SOAP 对所有这些都有严格的规则。所有 SOAP Web 服务都遵循 SOAP 规范,该规范规定了每个 SOAP Web 服务应该是什么。此规范由委员会开发和管理,如果 SOAP WS 甚至不遵循单个规则,那么根据定义,它不是 SOAP。

RESTful Web 服务的概念

在设计/开发 RESTful api 时,需要考虑的指南很少:

  1. 基于资源的位置/ URI
  2. 正确使用 HTTP 方法
  3. HATEOAS(超媒体作为应用程序状态的引擎)

开发 RESTful API 时的主要方法应该是使 API“尽可能地保持 REST”。