在看《restful web services》,老师推荐的,书很不错,虽然实际上觉得有点扯淡了,但能扯的这么好的书也十分值得一看了。如果没有纸质书看可以看电子版,下载地址在这里:英文版,中文版(照片转化来的,效果不太好),书上的实例程序在这里。
实际上,rest并不是一个协议或技术,rest仅仅只是体系结构风格。或者说,rest仅仅只是一系列的原则。根据这些原则搭建网站能够让我们的网站更容易的被程序所使用,也就是说我们搭建网站时应当假设这个网站是专门为程序员写程序准备的(即programmable web),所有的接口都应该尽量简单。所以,rest要求使用http的基本方法,即get,post,delete方法,而且其他的树形要求体现在uri中,不能够像现今的很多网站那样在uri中放入各式各样的方法参数。
从根本上来说,现今的网站多是RPC的,也就是面向操作的,他的特点是每一个操作对应一个uri,当然操作的对象也会体现在uri或者http报文内部。这种架构对于编写程序的阻碍是,发送的信息通常需要包含很多信息,增加了发送的负担和编写程序的负担;另外,由于是基于操作的,各式各样的操作和不同的参数非常不统一,通常只能针对一个网站,如果换了一个网站就要重新学习。后一点对于编程的阻碍是难以想象的。
相对而言,rest则是面向资源的。也就是说,没有那些繁杂的操作,所有的操作就只有那么几个,即get,post,delete。对于程序员来说,对所有资源的操作都是一样的,不需要再去熟悉网站提供的各式各样的专门操作,完全可以学习一次,多次使用。面对不同的网站时,需要改变和重新学习的就只有网站的链接以及网站资源的分布方式。如果不同的网站都遵循rest的一系列原则的话连资源分布都十分相似,程序员编写程序的代价就更小了。甚至完全可以将原代码中的链接修改一下直接拿来就可以用。想想都觉得激动!
然而,就我目前所了解的,rest服务由于其特殊的要求,在信息的安全上存在一定的缺陷,需要一些特殊的手段,例如SSL/TLS,基本和摘要式认证(Basic und Digest Authentication),JSR,OAuth,HMAC等等。
当然,直接看书是一个更好的选择。
【全文完】