对REST资源定位的两点看法

初识REST资源服务,感觉春天总算到了。“Web服务器只提供资源服务”,多么清晰简洁的表述。这表述让我欣喜若狂,所有困惑一扫而光,接下来赶紧深入了解。

要提供资源服务,首先需要对资源进行定位,然后才能对资源进行进一步操作。这与面向对象思维模式一致,先找对象,然后对对象进行操作。REST告诉我们,可以通过URL进行定位。比如,要访问学生张三,可以写出如下的URL:

 /students/张三

说法很正确,也很笼统。对于资源定位,REST没有给出更明确的说法。通过实践与总结,我们发现资源定位应该分两种情况。一种是定位到单个资源,如上面的学生张三。另一种是定位到集合,如定位到所有学生的集合。定位到单个资源与定位到集合,能进行的变更操作是不同的。当定位到单个资源时,比如学生张三,能进行的变更操作只能是修改或者删除。而定位到集合,能进行的变更操作只能是添加或者移除。请注意:删除与移除动作的区别,移除是指把对象从集合中去掉,而对象本身还在,而删除则是指把对象彻底从系统中删除。

以上是我们对资源定位的第一点看法。第二点看法,当从系统中获取资源内容,而不是进行变更时,URL是否合适?答案是否定的,这时候更合适的表示方式是XPath,因为XPath可以在路径中包含条件。比如要获取一年级一班年龄大于7岁的学生家长的职业,可以写出如下的XPath表示:

/grid[1]/class[1]/student[age>7]/(father/job,mother/job)

XPath是我们目前发现的,最适合检索的表示方式,比SQL、HQL等都直观简洁。在具体实现中,我们把XPath翻译成了HQL,然后调用HQL查询完成检索工作。

XPath不足处在于无法进行排序,我们会对XPath语法进行扩充,以满足排序要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值