刚才回了qiezi的一篇帖子,发现回到他的blog里去了,不如新开一篇:
[quote]我总觉得REST应该用于提供数据而不是页面[/quote]
如果能够套用CRUD,那么REST就是既能提供数据(或者用REST的术语:resource)又能提供页面。
[code]GET /posts # list, for display only
GET /posts/new # new, for display only
GET /posts/1;edit # edit, for display only
POST /posts # update, for resource
GET /posts/1 # view, for both display and resource
PUT /posts/1 # update, for resource
DELETE /posts/1 # destroy,for resource [/code]
为什么CRUD好,除了可以理清思路,更是为了可以用REST标准来创建一套既能...又能...的机制。这样为你的网站/程序自动提供API了。
设想REST流行起来,新网站都缺省地提供符合REST标准的API,整个internet就是一个巨大的类库,这才是真正的webOS。这才是REST的魅力所在,是激动人心的地方,不是仅仅为了某单个项目的优化。
再引申以下:
web calendar,web office,web mail,web rss reader都有些很不错的小公司提供的服务,人气也不错,但是google开始做这些东西的时候,他们就消失了(或者被google收购了)。因为虽然功能有些差距,但google把他们集成了呀。集成的便利性很有诱惑力,所以那些focus的小公司就无以为继了。有人说google是下一个microsoft,只不过把东西都搬到网上去了,这个垄断的趋势已经有苗头了。但是如果那些service provider都用REST的标准,就像上面说的,internet就是一个巨大的类库(就像DHH的那个ppt的名字:world of resources),那么垄断就不那么容易了。我们程序员也能得到更大的自由,册那,那是多么大的自由啊。我还能记得当我学会用vba控制ms office的喜悦。我用更大的喜悦期盼着这个world of resources。
如果从这个角度来理解CRUD的意义,是不是就简单一些了?再读一下Nested Resource的描述和定义。然后闭上眼睛想一想MFC,MSO(office库)或者你用过的任何API,他们是不都是resource或者nested resource的crud啊?操作系统都是crud接口的,什么不能呢?也许,你的某一个应用crud的不顺,我也不鼓吹所有的都要crud。人家说crud很伟大,为什么?要从world of resource来理解。
顺便说一句,vba是ms最好的macro语言。无疑,ruby是internet最好的macro语言。
[quote]我总觉得REST应该用于提供数据而不是页面[/quote]
如果能够套用CRUD,那么REST就是既能提供数据(或者用REST的术语:resource)又能提供页面。
[code]GET /posts # list, for display only
GET /posts/new # new, for display only
GET /posts/1;edit # edit, for display only
POST /posts # update, for resource
GET /posts/1 # view, for both display and resource
PUT /posts/1 # update, for resource
DELETE /posts/1 # destroy,for resource [/code]
为什么CRUD好,除了可以理清思路,更是为了可以用REST标准来创建一套既能...又能...的机制。这样为你的网站/程序自动提供API了。
设想REST流行起来,新网站都缺省地提供符合REST标准的API,整个internet就是一个巨大的类库,这才是真正的webOS。这才是REST的魅力所在,是激动人心的地方,不是仅仅为了某单个项目的优化。
再引申以下:
web calendar,web office,web mail,web rss reader都有些很不错的小公司提供的服务,人气也不错,但是google开始做这些东西的时候,他们就消失了(或者被google收购了)。因为虽然功能有些差距,但google把他们集成了呀。集成的便利性很有诱惑力,所以那些focus的小公司就无以为继了。有人说google是下一个microsoft,只不过把东西都搬到网上去了,这个垄断的趋势已经有苗头了。但是如果那些service provider都用REST的标准,就像上面说的,internet就是一个巨大的类库(就像DHH的那个ppt的名字:world of resources),那么垄断就不那么容易了。我们程序员也能得到更大的自由,册那,那是多么大的自由啊。我还能记得当我学会用vba控制ms office的喜悦。我用更大的喜悦期盼着这个world of resources。
如果从这个角度来理解CRUD的意义,是不是就简单一些了?再读一下Nested Resource的描述和定义。然后闭上眼睛想一想MFC,MSO(office库)或者你用过的任何API,他们是不都是resource或者nested resource的crud啊?操作系统都是crud接口的,什么不能呢?也许,你的某一个应用crud的不顺,我也不鼓吹所有的都要crud。人家说crud很伟大,为什么?要从world of resource来理解。
顺便说一句,vba是ms最好的macro语言。无疑,ruby是internet最好的macro语言。