论坛首页 综合技术论坛

求求你们,千万别再说自己是REST了

浏览 45502 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-01-09   最后修改:2009-01-09
andot 写道
jason_help 写道

简单的说,其实用程序就是模拟你上网站的操作。Fielding博士说了,首先会有个起始的标志,就是一个起始的URI,然后根据这个URI获取hypertext,这个hypertext就像是网站的首页,这个hypertext(如:首页)就决定了你客户端(用户)的操作,你根据这个hypertext中的URI发送一个请求,又会获取一个hypertext(进入了网站的另一个页面),这个hypertext又决定了你客户端(用户)的操作,然后再请求,再获取hypertext。。。。。。

其实整个过程的难点就是怎么用程序去理解这个hypertext,个人感觉这一块Fielding博士就是在讲要用语义。


你描述的这个程序看上去就是个网络蜘蛛啊。这么说来,REST 不过就是普通网站 + 浏览器客户端 + 网络蜘蛛。


网络蜘蛛能理解这个hypertext吗?我哪一天改变hypertext的内容了,网络蜘蛛还能理解吗?
如果网络蜘蛛能理解,会到现在还在寻找语义搜索吗?
0 请登录后投票
   发表时间:2009-01-09  
jason_help 写道
andot 写道
jason_help 写道

简单的说,其实用程序就是模拟你上网站的操作。Fielding博士说了,首先会有个起始的标志,就是一个起始的URI,然后根据这个URI获取hypertext,这个hypertext就像是网站的首页,这个hypertext(如:首页)就决定了你客户端(用户)的操作,你根据这个hypertext中的URI发送一个请求,又会获取一个hypertext(进入了网站的另一个页面),这个hypertext又决定了你客户端(用户)的操作,然后再请求,再获取hypertext。。。。。。

其实整个过程的难点就是怎么用程序去理解这个hypertext,个人感觉这一块Fielding博士就是在讲要用语义。


你描述的这个程序看上去就是个网络蜘蛛啊。这么说来,REST 不过就是普通网站 + 浏览器客户端 + 网络蜘蛛。


网络蜘蛛能理解这个hypertext吗?我哪一天改变hypertext的内容了,网络蜘蛛还能理解吗?
如果网络蜘蛛能理解,会到现在还在寻找语义搜索吗?


网络蜘蛛只跟随hypertext内容中的链接,你改变了内容,下次它再访问这个hypertext时,它就会跟随改变后内容中的链接了。至于语义,网络蜘蛛能够理解的也只有 hypertext 中的哪些链接该用什么方法去请求(比如 a 的 href 中的链接用 GET 去请求,form 中的 action 则根据 method 指定的方法去请求),另外,网络蜘蛛能够理解的还有就是 HTTP 的头信息。所以 Fielding 强调了 HTTP 中 GET、POST、PUT、DELETE 等操作原语以及 HTTP 头信息的重要性。

你说的语义难道是指对自然语言语义的理解吗?从 Fielding 的论文中可怎么都看不出这点啊!
0 请登录后投票
   发表时间:2009-01-10   最后修改:2009-01-10
andot 写道
网络蜘蛛只跟随hypertext内容中的链接,你改变了内容,下次它再访问这个hypertext时,它就会跟随改变后内容中的链接了。至于语义,网络蜘蛛能够理解的也只有 hypertext 中的哪些链接该用什么方法去请求(比如 a 的 href 中的链接用 GET 去请求,form 中的 action 则根据 method 指定的方法去请求),另外,网络蜘蛛能够理解的还有就是 HTTP 的头信息。所以 Fielding 强调了 HTTP 中 GET、POST、PUT、DELETE 等操作原语以及 HTTP 头信息的重要性。

你说的语义难道是指对自然语言语义的理解吗?从 Fielding 的论文中可怎么都看不出这点啊!

其实我个人也感觉Fielding的这篇blog中的要求有些太理想化了,要完全按照他的要求来实现RESTful Web Service,难度是非常大的。不过从Fielding的立场上来看,他就应该这样做。像Berners-Lee和Fielding这样的人肩负着指明Web未来发展方向的重任,如果他们总是喜欢对现实妥协,没有鲜明的立场和观点,他们就不适合作为W3C的带头人了。
从实现角度来说,一个最直接的问题就是HTML本身语义不足,所以我才会考虑到使用microformat来与hypertext驱动相配合。microformat可以为a和form这类元素添加上更加丰富的语义,以便于搜索引擎更加智能地追踪hypertext中的超链接。

我已经尽最大努力解读Fielding的想法,但是还是没有把握完全理解。我前面的这些评论仅仅起到抛砖引玉的作用。至少可以为我们这些参与讨论的朋友们建立一些理解上的共识,为今后更深入的讨论建立一个基础。不至于将来鸡同鸭讲,彼此因为自负和面子问题而互不相让,甚至人身攻击,将讨论导向一个恶性的方向。
0 请登录后投票
   发表时间:2009-01-10   最后修改:2009-01-10
dlee 写道
andot 写道
网络蜘蛛只跟随hypertext内容中的链接,你改变了内容,下次它再访问这个hypertext时,它就会跟随改变后内容中的链接了。至于语义,网络蜘蛛能够理解的也只有 hypertext 中的哪些链接该用什么方法去请求(比如 a 的 href 中的链接用 GET 去请求,form 中的 action 则根据 method 指定的方法去请求),另外,网络蜘蛛能够理解的还有就是 HTTP 的头信息。所以 Fielding 强调了 HTTP 中 GET、POST、PUT、DELETE 等操作原语以及 HTTP 头信息的重要性。

你说的语义难道是指对自然语言语义的理解吗?从 Fielding 的论文中可怎么都看不出这点啊!

其实Fielding的这篇blog有些太理想化了,要完全按照他的要求来实现RESTful Web Service,难度是非常大的。不过从Fielding的立场上来看,他就应该这样做。如果像Berners-Lee和Fielding这样的人肩负着指明Web未来发展方向的重任,如果他们总是喜欢对现实妥协,没有鲜明的立场,就不适合作为W3C的带头人了。
一个直接的问题就是HTML本身语义不足,所以我才会考虑到使用microformat来与hypertext驱动相配合。microformat可以为a和form这类的元素添加上更加丰富的语义,以便于搜索引擎更智能地追踪hypertext中的超链接。

我前面已经尽最大努力解读Fielding的想法,但是还是没有把握完全理解,我的这些评论仅仅起到抛砖引玉的作用。至少可以为我们这些参与讨论的朋友建立一个理解上的共识,为今后更深入的讨论建立一个基础。不至于将来鸡同鸭讲,彼此因为自负而互不相让,甚至人身攻击,将讨论导向一个恶性的方向。


嗯,非常同意你的这个观点

Fielding 的 REST 思想是大方向上的东西,是对前期 HTTP 协议设计的总结,也是对未来 Web 标准发展的指导。至于 microformat,可以算是在目前标准基础上对 HTML 做的有益扩展,也算是为新标准的制定做的前期实践和探索。这些我都是非常赞同的!

我反对的是向校内那样的打着“REST-like Web Service”之类的 API,明明只是一些半成品(甚至连半成品都算不上)的 RPC 接口,却冠以 REST 的名号去招摇撞骗。不但败坏了 REST,也恶心了开发者(因为这样的伪 REST API 跟真正的 RPC 相比是相当难用的)。

而造成现在这种情况的原因,正是这两年对 REST 的过分炒作(不只是国内,国外更严重),以至于让许多盲从者(当然还有一些过分精明的人)以为只要跟 REST 沾边就能火,不用 REST 就会很丢人。所以,大家都想去沾点 REST 的光,不管什么东西都要用 REST 包装一下,但是最后的结果确是让人更加不能理解 REST,让 REST 变成了一个恶心人的东西。现在 Fielding 终于怒了,但如果一年前他在那些写书人炒作之时就怒的话,恐怕也不至于造成现在的局面。
0 请登录后投票
   发表时间:2009-01-10  
andot 写道
jason_help 写道
andot 写道
jason_help 写道

简单的说,其实用程序就是模拟你上网站的操作。Fielding博士说了,首先会有个起始的标志,就是一个起始的URI,然后根据这个URI获取hypertext,这个hypertext就像是网站的首页,这个hypertext(如:首页)就决定了你客户端(用户)的操作,你根据这个hypertext中的URI发送一个请求,又会获取一个hypertext(进入了网站的另一个页面),这个hypertext又决定了你客户端(用户)的操作,然后再请求,再获取hypertext。。。。。。

其实整个过程的难点就是怎么用程序去理解这个hypertext,个人感觉这一块Fielding博士就是在讲要用语义。


你描述的这个程序看上去就是个网络蜘蛛啊。这么说来,REST 不过就是普通网站 + 浏览器客户端 + 网络蜘蛛。


网络蜘蛛能理解这个hypertext吗?我哪一天改变hypertext的内容了,网络蜘蛛还能理解吗?
如果网络蜘蛛能理解,会到现在还在寻找语义搜索吗?


网络蜘蛛只跟随hypertext内容中的链接,你改变了内容,下次它再访问这个hypertext时,它就会跟随改变后内容中的链接了。至于语义,网络蜘蛛能够理解的也只有 hypertext 中的哪些链接该用什么方法去请求(比如 a 的 href 中的链接用 GET 去请求,form 中的 action 则根据 method 指定的方法去请求),另外,网络蜘蛛能够理解的还有就是 HTTP 的头信息。所以 Fielding 强调了 HTTP 中 GET、POST、PUT、DELETE 等操作原语以及 HTTP 头信息的重要性。

你说的语义难道是指对自然语言语义的理解吗?从 Fielding 的论文中可怎么都看不出这点啊!


还不理解吗?

你是能够获取这些URI,但获取了能有什么用呢?你能知道这一堆URI是干什么用的吗?你如果不能理解对这些URI的描术,获取了这些URI能有什么用呢?

理解了跟网络蜘蛛的区别了吗? 再好好想想吧。
0 请登录后投票
   发表时间:2009-01-11  
jason_help 写道
andot 写道
jason_help 写道
andot 写道
jason_help 写道

简单的说,其实用程序就是模拟你上网站的操作。Fielding博士说了,首先会有个起始的标志,就是一个起始的URI,然后根据这个URI获取hypertext,这个hypertext就像是网站的首页,这个hypertext(如:首页)就决定了你客户端(用户)的操作,你根据这个hypertext中的URI发送一个请求,又会获取一个hypertext(进入了网站的另一个页面),这个hypertext又决定了你客户端(用户)的操作,然后再请求,再获取hypertext。。。。。。

其实整个过程的难点就是怎么用程序去理解这个hypertext,个人感觉这一块Fielding博士就是在讲要用语义。


你描述的这个程序看上去就是个网络蜘蛛啊。这么说来,REST 不过就是普通网站 + 浏览器客户端 + 网络蜘蛛。


网络蜘蛛能理解这个hypertext吗?我哪一天改变hypertext的内容了,网络蜘蛛还能理解吗?
如果网络蜘蛛能理解,会到现在还在寻找语义搜索吗?


网络蜘蛛只跟随hypertext内容中的链接,你改变了内容,下次它再访问这个hypertext时,它就会跟随改变后内容中的链接了。至于语义,网络蜘蛛能够理解的也只有 hypertext 中的哪些链接该用什么方法去请求(比如 a 的 href 中的链接用 GET 去请求,form 中的 action 则根据 method 指定的方法去请求),另外,网络蜘蛛能够理解的还有就是 HTTP 的头信息。所以 Fielding 强调了 HTTP 中 GET、POST、PUT、DELETE 等操作原语以及 HTTP 头信息的重要性。

你说的语义难道是指对自然语言语义的理解吗?从 Fielding 的论文中可怎么都看不出这点啊!


还不理解吗?

你是能够获取这些URI,但获取了能有什么用呢?你能知道这一堆URI是干什么用的吗?你如果不能理解对这些URI的描术,获取了这些URI能有什么用呢?

理解了跟网络蜘蛛的区别了吗? 再好好想想吧。


正是因为存在你说的这些问题,即网络蜘蛛只是获取之后跟随继续获取,而不能够做到自然语言方面的理解,所以我才说是网络蜘蛛啊。

请问仁兄对这些问题有何高见呢?莫非仁兄早已可以解决这些问题了吗?
0 请登录后投票
   发表时间:2009-01-12  
我来说一下我理解的超链接的作用:
现在假设有这么几个网站:百度提供博客、相册服务;网易提供邮箱、博客、相册服务;搜狐提供相册、视频服务。
假如这几家网站都提供标准的REST服务,我现在有一个客户端,可以理解博客、相册、邮箱、视频等所有这些服务,那么我用它访问百度的服务网站,首页就会提供两个链接:博客和相册,点博客再进去会是所有博客资源的列表。这样,我就能用这同一个客户端,访问所有网站提供的各种服务了。
而以后假如百度又要添加提供视频服务的话,它只要简简单单地在首页加上视频的链接就可以了,客户端无须做任何改变。
0 请登录后投票
   发表时间:2009-01-12   最后修改:2009-01-12
andot 写道
jason_help 写道
andot 写道
jason_help 写道
andot 写道
jason_help 写道

简单的说,其实用程序就是模拟你上网站的操作。Fielding博士说了,首先会有个起始的标志,就是一个起始的URI,然后根据这个URI获取hypertext,这个hypertext就像是网站的首页,这个hypertext(如:首页)就决定了你客户端(用户)的操作,你根据这个hypertext中的URI发送一个请求,又会获取一个hypertext(进入了网站的另一个页面),这个hypertext又决定了你客户端(用户)的操作,然后再请求,再获取hypertext。。。。。。

其实整个过程的难点就是怎么用程序去理解这个hypertext,个人感觉这一块Fielding博士就是在讲要用语义。


你描述的这个程序看上去就是个网络蜘蛛啊。这么说来,REST 不过就是普通网站 + 浏览器客户端 + 网络蜘蛛。


网络蜘蛛能理解这个hypertext吗?我哪一天改变hypertext的内容了,网络蜘蛛还能理解吗?
如果网络蜘蛛能理解,会到现在还在寻找语义搜索吗?


网络蜘蛛只跟随hypertext内容中的链接,你改变了内容,下次它再访问这个hypertext时,它就会跟随改变后内容中的链接了。至于语义,网络蜘蛛能够理解的也只有 hypertext 中的哪些链接该用什么方法去请求(比如 a 的 href 中的链接用 GET 去请求,form 中的 action 则根据 method 指定的方法去请求),另外,网络蜘蛛能够理解的还有就是 HTTP 的头信息。所以 Fielding 强调了 HTTP 中 GET、POST、PUT、DELETE 等操作原语以及 HTTP 头信息的重要性。

你说的语义难道是指对自然语言语义的理解吗?从 Fielding 的论文中可怎么都看不出这点啊!


还不理解吗?

你是能够获取这些URI,但获取了能有什么用呢?你能知道这一堆URI是干什么用的吗?你如果不能理解对这些URI的描术,获取了这些URI能有什么用呢?

理解了跟网络蜘蛛的区别了吗? 再好好想想吧。


正是因为存在你说的这些问题,即网络蜘蛛只是获取之后跟随继续获取,而不能够做到自然语言方面的理解,所以我才说是网络蜘蛛啊。

请问仁兄对这些问题有何高见呢?莫非仁兄早已可以解决这些问题了吗?


现在的语义技术对于构建像语义搜索这一类的本体是有一定的难度,但对于构建特定网站特别是像rest描述这样的本体(Ontology),还是问题不大的,有兴趣的话可以看点rdf,rdfs,owl等相关的语义描述。
0 请登录后投票
   发表时间:2009-01-14  
clia 写道
我来说一下我理解的超链接的作用:
现在假设有这么几个网站:百度提供博客、相册服务;网易提供邮箱、博客、相册服务;搜狐提供相册、视频服务。
假如这几家网站都提供标准的REST服务,我现在有一个客户端,可以理解博客、相册、邮箱、视频等所有这些服务,那么我用它访问百度的服务网站,首页就会提供两个链接:博客和相册,点博客再进去会是所有博客资源的列表。这样,我就能用这同一个客户端,访问所有网站提供的各种服务了。
而以后假如百度又要添加提供视频服务的话,它只要简简单单地在首页加上视频的链接就可以了,客户端无须做任何改变。


嗯,现在的浏览器客户端就是这样工作的。
0 请登录后投票
   发表时间:2009-01-19  
学ROR吧,真正的RESTful!
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics