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动作
向新资源发put请求 向已有资源发put请求 POST
weblogs N/A(资源已存在) 无效果 创建一个新博客
weblogs/myweblog 创建该博客 修改该博客的设置 往博客里添加一篇文章
weblogs/myweblog/entries/1 N/A(你无法知道这个URI) 编辑该博客文章 为该博客文章添加评论

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&start=20。


你可能感兴趣的:(数据结构,应用服务器,算法,搜索引擎,REST)