Reasful服务
1.概述
1.1 什么是 RESTful API?
RESTful 全称是: Representational State Transfer ,翻译是 表现性状态转移;
RESTful指的是一组架构约束条件和原则。
在2000年 Roy Fielding 的博士论文中,Roy Fielding 是 HTTP 规范的主要编写者之一。 他在论文中提到:”我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构. REST指的是一组架构约束条件和原则。”
1.2 什么是 RESTful 架构?
如果一个架构符合 REST 原则,就称它为 RESTful架构。
目前 HTTP 是 REST 唯一的实例。
目前网络上的文章大多都是以 HTTP 为例子讲解 RESTful
1.3 RESTful 4个基本设计原则是什么?
- 显性地使用
HTTP方法 - 无状态
- 公开目录结构式的
URI - 传输
XMLJSON
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 |