1。2 Web 服务和服务描述
1。2。1RESTful Web 服务
REST 即表述性状态传递(Representational State Transfer,简称 REST)是一种软件架构风 格,这种软件架构风格是由 Roy Fielding 博士于 2000 年在其博士论文中提出来的。REST 是 一种针对网络应用的,为降低开发的复杂性以及提高系统的可伸缩性而设计的开发方式。
REST 是指一组架构约束条件和原则,而满足这些约束条件和原则的应用程序或设计即 可被称为 RESTful。所以,一个采用 REST 原则设计的 Web 服务就是 RESTful Web 服务。 REST 主要有以下五个关键词构成:
(1)资源(resource) 资源是一种把服务器看作由许多离散的资源组成的方式。因为可以把每个资源看作是服
务器上一个可命名的抽象概念,所以它不但可以代表那些具体的东西,比如服务器文件系统 中的一个文件、数据库中的一张表等,也可以代表很多抽象的东西,只要客户端开发者能理 解即可。设计资源的方式与设计面向对象的方式类似,所以资源的核心是名词,在设计资源 时首先应关注的也是名词。一个资源可以由一个或多个 URI 来标识。URI 既是资源的名称, 也是资源在 Web 上的地址。所以客户端应用可以通过资源的 URI 与资源进行交互。
(2)资源的表述(representation) 资源的表述即一段对资源在某一特定时刻下的状态的描述。有多种格式可以进行资源的
表述,如图片/视频/音频/纯文本/HTML/XML/JSON 等,而协商机制可以用来确定资源的表述 格式。通常情况下我们可以用不同的格式来表述请求-响应方向的资源。
(3)状态转移(State Transfer)
本科毕业设计说明书 第 3 页
状态转移的意思不同于状态机中的状态迁移, 状态机中的状态迁移被翻译为 state transition。状态转移的具体解释是,以资源状态的表述来表示客户端和服务器端之间的转移。 要间接实现操作资源可以通过转移和操作资源的表述来达到。
(4)统一接口(Uniform Interface)
REST 对资源的各种操作有一个严格的要求,即必须通过统一的接口来实现,且对于每个 资源只能实行一组有限的操作。比如 HTTP/1。1 协议就定义了一组用以操作资源的统一接口:
7 个 HTTP 方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS
HTTP 头信息(可自定义)
HTTP 响应状态代码(可自定义)
一套标准的内容协商机制
一套标准的缓存机制
一套标准的客户端身份认证机制
REST 同时做出了另外的一些要求,如对于执行资源的操作,操作语义必须由 HTTP 消 息体之前的部分完全表达,不能将操作语义封装在 HTTP 消息体内部,以此提高交互的可见 性,从而便于通信链的中间组件实现安全审计、缓存等功能。论文网
(5)超文本驱动(Hypertext Driven)
“ 超文本驱动” 又名“ 将超媒体作为应用状态的引擎”( Hypermedia As The Engine Of Application State,来自 Fielding 博士论文中的一句话,缩写为 HATEOAS)。一个 Web 应用 可以被看作是一个由很多状态(应用状态)组成的有限状态机,而资源之间可以经由超链接 相互关联。超链接既能够表示资源之间的关系,也能够表示可执行的状态迁移。超媒体中不 但包含数据,还包含状态迁移的语义。Web 应用的状态迁移的驱动是以超媒体作为引擎的。 超媒体能暴露出服务器所提供的资源,即服务器提供了哪些资源是在运行时通过解析超媒体 发现的,而不是事先定义的[16]。