RESTful服务

Reasful服务

1.概述

1.1 什么是 RESTful API?

RESTful 全称是: Representational State Transfer ,翻译是 表现性状态转移

RESTful指的是一组架构约束条件和原则。

在2000年 Roy Fielding 的博士论文中,Roy FieldingHTTP 规范的主要编写者之一。 他在论文中提到:”我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构. REST指的是一组架构约束条件和原则。”

1.2 什么是 RESTful 架构?

如果一个架构符合 REST 原则,就称它为 RESTful架构

目前 HTTPREST 唯一的实例。

目前网络上的文章大多都是以 HTTP 为例子讲解 RESTful

1.3 RESTful 4个基本设计原则是什么?

  • 显性地使用 HTTP 方法
  • 无状态
  • 公开目录结构式的 URI
  • 传输 XML JSON

2.RESTful准则讲述

2.1 显性地使用 HTTP 方法

讲的是关于 HTTP 是现在 RESTful 实践最好的例子, HTTP 里面的方法对应着 RESTful 的操作。

HTTP 方法 RESTful 操作
Get 检索
Post 创建
Put 更新
Delete 删除

这里说的是相对应的操作方法,不要和 HTTP 方法混淆,这样才不会产生概念上的冲突。

2.2 无状态

  • 无状态
    意味着在客户端发起请求的时候,是不需要在保存相应的请求状态。
    服务器负责生成响应,并提供使客户端能够独自维护应用程序状态的接口。
  • 有状态
    就是意味着在客户端发起请求的时候,是需要在本地保存相应请求状态。
    例子: 在 Java Platform, Enterprise Edition (Java EE) 环境中,有状态的服务需要大量的预先考虑,以高效地存储会话数据和支持整个 Java EE 容器集群中的会话数据同步。

2.3公开目录结构式的 URI

  • URI , Uniform Resource Identifier , 统一资源标记符 ,是标识互联网某一个资源名称的字符串,不是标准的网址。
  • URL , Uniform Resource Locator , 统一资源定位符 ,是标识互联网某资源的地址,标准的网址表示。

但是遵循 RESTful 准则,在 RESTful 架构中,应该是使用 URI 作为接口,来表示传输的某一资源的名称。

在 RESTful 服务中,标准会议给出以下的最好的建议:

  • 隐藏服务器端脚本技术文件扩展名(.jsp、.php、.asp)——如果有的话,以便您能够移植到其他脚本技术而不用更改 URI。
  • 将所有内容保持小写。
  • 将空格替换为连字符或下划线(其中一种或另一种)。
  • 尽可能多地避免查询字符串。
  • 如果请求 URI 用于部分路径,与使用 404 Not Found 代码不同,应该始终提供缺省页面或资源作为响应。 

题外话: URI 和 URL 的不同
URI 和 URL 都定义了 what the resource is。
URL 还定义了 how to get the resource。

2.4 传输 XML、JSON

在 RESTful 服务中,客户端和服务端之间传输的数据格式有 XML / JSON.
不过在请求头中,加上相对应的 Content-Type

MIME-Type Content-Type
Json application/json
Xml application/xml
Xhtml application/xhtml+xml