没有合适的资源?快使用搜索试试~ 我知道了~
RESTful架构实战.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 23 浏览量
2023-11-03
09:39:27
上传
评论
收藏 3.53MB DOCX 举报
温馨提示
试读
99页
RESTful架构实战
资源推荐
资源详情
资源评论
1
http://fakelibrary.org/library
RESTful 架构基础
REST(Representational
State
Transfer)架构⻛格是�种世界观,把信息提升为架构中的�等公⺠。 通过 REST 可以实
现系
统的�性能、可伸缩、通�性、简单性、可修改性和可扩展等特性。这篇�章解释了主要的 HTTP 操作,对 HTTP 响应码进�描
述,并列举相关开发库和框架。此外,本�还提供了额外的资源,对每个主题进�了更深�的探讨。
1.
简介
REST 架构⻛格不是�种可以购买的技术,也不是�个可以添加到软件开发项�中的开发库。 �先也是最重要的,REST 是�种世
界
观,把将信息提升为构建架构中的�等公⺠。
Roy Fielding 的博�论�“架构⻛格和基于�络的软件架构设计”介绍和整理了“RESTful”系统的思想和相关术语。 这是�篇
学术论�,虽然使�正式语�,但是仍然易于理解并且提供了实践基础。
总结�下,RESTful 通过体系结构的特定选择能从部署的系统中获得理想特性。 尽管这种⻛格定义的约束细节并没有为所有场合
设计,但是的确可以�泛适�。
由于 Web 对消费者偏好有多重影响,REST ⻛格的倡导者�励企业组织在其边界内使�相同原则,就像他们在�向外部客�的�
⻚上做的那样。本�将讨论现代 REST Web 实现中的基本约束和属性。
基础概念
REST 表�什么含义?以�状态�式传输、访问和操作�本数据。当正确部署后,REST 为互联�上不同应�程序之间提供了�
致的互操作性。�状态(stateless)这个术语�关重要,它使得应�程序可以�不可知的�式进�通信。RESTful
API
通过统
�资源定位符地址(URL)公开服务。URL 名称将资源的区分为接受内容或返回内容。RFC 1738中定义了 URL scheme,可以
在这
�找到:
https://tools.ietf.org/rfc/rfc1738.txt
RESTful URL 类似于下�这个 library API:
实际公开的不�定是某种任意的服务,�是代表对消费者有价值的信息资源。URL 作为资源句柄,可以请求、更新或删除内容。
开始把服务发布到某个地�,然后开始与 REST 服务进�交互。 返回的内容可能是 XML、JSON 格式,或者更确切地说是
像
Atom 或�定义 MIME 类型等超媒体格式。虽然�般建议尽可能重�现有的格式,但是对正确设计的媒体类型正在变得越来越
宽
容。
需要请求资源的时候,客�机会发�个超�本传输协议(HTTP)GET 请求,例如在浏览器中键��个 URL 然后点击回⻋,选择
书签,或者点击锚引�链接。
通过编程�式与 RESTful API 交互,有数�个客�端 API 或�具可供选择。使� curl 命令��具,可以输�以下命令:
1
$ curl –H "Accept:application/json" http://fakelibrary.org/library
1
$ curl –u username:password -d @book.xml -H "Content-type: text/xml" http://fakelibrary.org/book
1
http://fakelibrary.org + /book/isbn/978-0596801687
上�的命令使�默认格式,但你可能不需要这种格式的信息。幸运的是 HTTP 有�种机制,可以指定返回信息的格式。 在请求中
指定 "Accept" 头,如果服务器�持这种格式,会以指定的格式返回。 这个过程称为内容协商,这是 HTTP 中未被充分利�的功能
之�,可以使��个类似于上�例�中的 curl 命令来指定:
由于资源名称与内容格式是独�的,从�让请求不同格式信息成为可能。虽然
REST
中的 “R” 的含义是 “表现”��“资
源”,但是应该在构建系统时允许客�端指定请求的内容格式,请牢记这�点。在我们的例�中 library API 可能包含以下
URL:
h
tt
p
:
//
f
a
k
e
l
i
b
r
a
r
y
.
or
g
/
l
i
b
r
a
r
y
:图书馆基本信息,搜索图书、
D
V
D
等相关资源基本功能的链接。
h
tt
p
:
//
f
a
k
e
l
i
b
r
a
r
y
.
or
g
/
b
oo
k
:存放书籍的“信息空间”。从概念上说,这�可能会存放所有的书籍。显然,如果这个问
题得到解决,我们不会希望返回所有图书,�是希望通过类别、搜索关键词等来检索图书。
h
tt
p
:
//
f
a
k
e
l
i
b
r
a
r
y
.
or
g
/
b
oo
k
/
c
a
t
e
g
or
y
/
1234
:在书籍的信息空间�,我们可以指定类别浏览,例如成��说、�童
书
籍、园艺书籍等。使�杜威�进制图书分类法是可�的,但我们也可以想象�定义分组。问题的关键在于,这种“信息空间”
可能是�限的,�且可能收到�们实际关�的信息类型影响。
h
tt
p
:
//
f
a
k
e
l
i
b
r
a
r
y
.
or
g
/
b
oo
k
/
i
s
b
n
/
978
-
0596801687
:提到某本具体的书,应该包括书名、作者、出版商、系统
中的拷⻉数、可�拷⻉数等信息。
译注:杜威�进制图书分类法由美国图书馆专家⻨尔威
·
杜威发明,于
1876
年�次发表,历经
22
次的�改版。该分类法以三
位数字代表分类码,共可分为
10
个�分类、
100
个中分类及
1000
个�分类。
就图书馆����,上�提到的这些 URL 可能就是只读的,但是图书馆员使�应�程序时实际上可以操作这些资源。
例如添加�本新书,可以向 main/book 地址 POST �个 XML。使� curl 提交,看起来可能像这样:
此时,服务器可能会对提交的内容进�校验,创建与图书相关的记录,并返回响应代码201——表�已创建新资源。新资源的
URL 可以在响应的 Location 头中找到。
RESTful 请求�个重要特性:每次请求都包含了充�的状态信息来响应请求。这为服务器的可⻅性和�状态创造了条件,并为扩
展系统和识别发送的请求内容提供了理想特性。对于缓存结果也�常有帮助。服务器地址和请求状态组合成可计算的 hash 键
值,并形成�个结果集:
接下来我们会先介绍 GET 请求。客�端在需要时发出 GET 请求获取指定资源。客�端可以在本地缓存请求结果,服务器可以在
1
远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是�个与具体应�程序�关的特性,可以加�系统设计中。
正因为可以操作资源,也就意味着并不是每个�都可以这样做。我们完全可以建��个防护模型,要求��在操作前验证�份,
证明他们具有该操作的授权。在本�的最后,将提供�些提升 RESTful 服务安全性的内容。
2.
REST 和 SOAP ⽐怎么样?
SOAP:简单对象访问协议(Simple
Object
Access
Protocol)。是交换数据的�种协议规范,是�种轻量的、简单的、基于
XML的协议。�条 SOAP 消息就是�个普通的 XML �档,包含必需的 Envelope 元素、可选的 Header 元素、必需的 Body
元
素和可选的 Fault 元素。
把 REST 与 SOAP 划等号是错误的。在这两者之间进��较,带来的困扰远多于好处。简单来说,它们不是�回事。尽管可以�
这两种�法解决许多架构问题,但是它们不能相互替换。
这种混淆很�程度上源于对“REST 是通过 URL 调� Web 服务”这句话的误解。 这种观点与 RESTful 架构的功能相距甚远。如
果不全�深�理解 RESTful 的架构实现,就很容易误解 REST 实践的本意。
利� REST 的最佳�式,是将�产和消费过程中的信息与技术分离实现解耦,进�更好地管理系统,让架构具备以下特性:
�性能
可扩展
通�
简洁
可修改
可扩展
这并不是说,基于 SOAP 构建的系统不能具备上述特性。 �是当技术、组织或过程的复杂性造成不能在单个事务中完成请求的�
命周期时,这种情况 SOAP 能够发挥最佳效果。
3.
Richardson 成熟度模型
Leonard Richardson 引�了�种成熟度模型,部分阐述了 SOAP 与 REST 之间的区别,并提供�种对不同类型的系统进�分
类 的框架。许多�不恰当地称之为 “REST”。 可以将这种分类看作系统中不同 Web 技术组件紧密程度的度量标准:包括信息资
源、HTTP 作为应�层协议和作超媒体作为控制媒介。
称其为“成熟度模型”似乎意味着应该只构建“成熟度”最�的系统。这种看法是不合适的。第2级是有价值的,从2级向3级转变通常
只是采�了�种新的 MIME 类型。然�,从0级到3级的转变要困难得多,因此增量式升级转变通常也会增值。
�先,确定希望公开哪些信息资源。采� HTTP 作为处理这些信息资源的应�协议,包括内容协商。 接下来,当�切就绪时,使
�基于超媒体的 MIME 类型,这样就可以充分享受 REST 的好处了。
4.
动词
动词是�来与服务器资源交互的�法或操作。
RE
S
T
f
u
l
系统中有限的动词让刚接触该的使�者感到困惑和沮丧。看似武断和不
必要的约束,�的是�励以应�程序�关的形式提供可预测的�为。通过明确、清晰地定义这些动词的�为,客�端可以在�络
中断或故障时�主处理。
精�设计的 RESTful 系统主要使�4个 HTTP 动词。
GET
剩余98页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1901
- 资源: 3889
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功