首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

REST学习札记

2012-07-20 
REST学习笔记restful web services学习笔记,在此记录以备以后参考 在应用里每个有价值的事物都应该被暴露

REST学习笔记
    restful web services学习笔记,在此记录以备以后参考

在应用里每个有价值的事物都应该被暴露为一个资源。
一般roa设计步骤:
1.规划数据集
2.把数据集划分为资源
  对于其中每种资源:
3.用uri为该资源命名
4.暴露一个统一接口的子集
5.设计来自客户端的表示
6.设计发给客户端的表示
7.用超链接和表单把该资源与已有资源联系起来
8.考虑有哪些典型的事件经过
9.考虑可能出现哪些错误情况

可寻址性
如果一个web服务将其数据集里有价值部分作为资源发布出来,那么该应用就是可寻址的。一个uri应当只表示一个资源。一个资源的不同表示可以使用不同的uri,例如:/release/104.html和/release/104_en.html

状态与无状态性
rest服务里状态分为两种:资源状态(即关于资源的信息)和应用状态(即关于客户端在应用中所处状态的信息)。资源状态保存在服务端,而且只能以表示的形式发给客户端。应用状态保存在客户端;当它能够创建、修改或删除一个资源时,它将作为post、put或delete请求的一部分发送给服务器,成为资源状态。例如使用搜索引擎时提交一个关键字得到查询结果,然后我们又进行翻页,这里关键字和页码都是属于应用状态。

统一接口
get:获取一个资源的表示
put:创建一个新资源,修改已有资源。
delete:删除已有资源
post:创建从属于某个父资源的资源,也可以用它来为资源的当前状态添加数据。(这里的添加数据和put的用法修改已有资源有区别,例如:通过post向服务器提交新的log)
head:获取的一个子包含元数据的方法
options:查看一个资源支持哪些http方法。options请求的响应里含有http allow报头(header)。allow报头的例子:allow:get,head 这个报头表明:该资源支持get和head请求。

put和post动作
<table class="bbcode"><tr><td></td><td>向新资源发put请求</td><td>向已有资源发put请求</td><td>post</td></tr><tr><td>weblogs</td><td>n/a(资源已存在)</td><td>无效果</td><td>创建一个新博客</td></tr><tr><td>weblogs/myweblog</td><td>创建该博客</td><td>修改该博客的设置</td><td>往博客里添加一篇文章</td></tr><tr><td>weblogs/myweblog/entries/1</td><td>n/a(你无法知道这个uri)</td><td>编辑该博客文章</td><td>为该博客文章添加评论</td></tr></table>
put与post的区别就在于:假如是客户端负责决定新资源采用什么uri,那就用put;假如是服务器负责新资源采用什么uri,那就用post。put的实现要求具有等幂性而post的实现可以没有等幂性

uri设计
uri设计有三条基本原则:
1.用路径变量(path variables)来表达层次结构:weblogs/myweblog/entries/1。
2.用逗号或分号表达非层次结构:/parent/child1;child2   /earth/43.2,45.6。当作用域信息的次序有关紧要时,就用逗号,否则就用分号。
3.用查询变量(query variables)来表达算法的输入,例如:/search?q=jellyfish&amp;start=20。


  1 楼 yeaha 2011-08-10   > 暴露一个统一接口的子集
怎么理解?

热点排行