读书人

REST与面临资源的Web开发-深刻理解Web

发布时间: 2012-10-08 19:54:56 作者: rapoo

REST与面向资源的Web开发-深刻理解Web的架构
1.什么是REST

◆Representational State Transfer(表述性状态转移)
◆来自Roy Fielding的博士论文:
《Architectural Styles and the Design of
Network-based Software Architectures》
(架构风格与基于网络的软件架构设计)
◆一种架构风格
▲比具体的架构更为抽象
▲类比:接口-实现 或 类-实例

◆Web之所以取得成功的技术架构因素总结
◆HTTP 1.1等Web标准设计的指导原理
▲新的Web标准的设计必须符合REST的要求,
否则整个Web的架构会因为严重的内在矛盾而 崩溃
◆HTTP 1.1的设计是用来为实现REST风格的架构服务的

◆Web服务器上任何一个可命名的抽象概念
▲资源是抽象的概念
-不只能代表服务器上的一个文件、数据库中的一张表等等很具体东西
-要多抽象有多抽象,只要想象力允许
◆由一个唯一的URI来标识
◆以名词为核心来组织
◆类比:面向对象编程中的类

2.什么是表述

◆GET请求的响应中包含的是资源的表述
◆资源的表述反映了资源的当前状态
◆客户端可以修改资源的表述,并通过POST/PUT请求发送到服务器
▲客户端通过修改资源的表述,来间接修改资源的状态

◆资源的表述可以有多种格式
html
xml
json
......

3.什么是面向资源
◆Web服务器由大量离散的资源组成
◆每个资源有自己的状态
◆针对每个资源只能执行一组有限的操作
▲通过HTTP 1.1的标准方法来对资源进行操作
-GET/POST/PUT/DELETE/HEAD/OPTION/TRACE
▲HTTP 1.1定义了操作资源的统一接口
◆资源之间通过表述中的超链接相互关联

4.Struts2中的REST开发
◆首先定义资源,每个资源对应一个URI,开发一个Controller
◆每一个Controller有7个标准的action方法
◆可以实现额外的action方法,但是必须与操作此资源相关
◆发现有7个标准的action方法无法实现的功能,应再定义一个新的资源

◆URI的格式
http://www.xxx.com/books
http://www.xxx.com/books/123
URI中最好用复数
◆客户端请求某种特殊的表述格式用URI+后缀表示
http://www.xxx.com/books.xml
http://www.xxx.com/books/123.json

◆7个标准的action方法与HTTP请求的对应关系:
GET /books → index
GET /books/123 → show
POST /books → create
PUT /books/123 → update
DELETE /books/123 → destroy
GET /books/new → editNew
GET /books/123/edit → edit

◆如何在HTML表单中模拟PUT/DELETE请求
<@s.hidden name="_method" value="put"/>

5.REST开发的优点
◆简单、规范
◆对搜索引擎更友好
◆对Ajax支持的更好
◆可以充分利用浏览器端的缓存

参考资料
《架构风格与基于网络的软件架构设计》
RFC 2616(HTTP/1.1)
RFC 2617(HTTP Authentication)
《RESTful Web Services》中文版
《Struts 2.1权威指南》第12章






读书人网 >Web前端

热点推荐