论坛首页 编程语言技术论坛

javaeye似乎也不是完全的RESTFul

浏览 19762 次
精华帖 (3) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2008-11-27  
restful 是实现层的,不能简单从url上区分吧
0 请登录后投票
   发表时间:2008-11-27   最后修改:2008-11-27
jacky.jihao 写道
restful 是实现层的,不能简单从url上区分吧


如果URL真如诸位所言那么无足轻重的话,fielding博士的论文里也没必要用那么多篇幅去描述URI了。
要说一个设计如何如何的好,我认为首先就是要遵守形式上的约束,况且这个形式是与实质有必然关系的。就如同XML,我的一堆标记设计的再好,描述能力再强大,如果写出来的文档不是well-formed,解析器根本就不认。

当然在企业软件领域,很多时候很难设计出一个格式漂亮又能表达意图的URL,比如一个GET,往往参数一堆,没法组织。 这只能说明REST在这样的应用中不适合,而不是说为了把REST套进来,URL的格式就可以忽略。
0 请登录后投票
   发表时间:2008-11-27   最后修改:2008-11-27
hozaka 写道
我并没有针对楼主或者某个人的意思,如果引起大家的误解我可以道歉,只是对事不对人而已。

举个实际的例子,比如 http://www.example.com/findProduct?id=1 这样一个 url,就不 REST 了吗?不一定,只要这个地址能根据不同的 request method 执行不同的过程,就是 REST。

我的观点:REST 的精髓在于资源,而不是 URL,更加没有限定URL的形式。不在于表象,而在于资源的内部,即如 REST 字面意思所描述,发生迁移的,是 server 端的状态;变化的表象,是客户端的结果;改变的手段,是通过 URL,在这里,仅仅是作为一个入口,仅此而已,至于形式,在这个过程中是无所谓的。


其实这个例子, 根本没法说明你RESTFUL了。
从这个URL分析,http method是GET,无论我RESTFUL与否,都是GET, 有什么区别么? 而且从这个URL看不到任何资源的概念,怎么让人相信你就是RESTFUL了呢。RESTFUL提供了一种以名词(资源)为中心的建模思路,所有的动词语义都用隐藏在背后的HTTP get, put, post, delete来表达,而不是显式的find什么,add什么。

形式自有其必要性, 况且这个形式与本质是紧密关联的。如果不能用一个适合的URL来表述资源,那么肯定存在如下两个问题之一:
1. 在不适合RESTFUL的业务场景下使用了REST
2. 对资源的抽象,理解和组织有问题

1 请登录后投票
   发表时间:2008-11-27  
恰恰相反,举这样一个在很多人看来没办法说明REST的例子,正是我的本意。
引用
从这个URL分析,http method是GET,无论我RESTFUL与否,都是GET, 有什么区别么?


首先,光从一个URL是没有办法断定所谓GET还是POST,或者是PUT,DELETE,HEAD等等,即使是我所举的这样一个例子,只要能响应POST,PUT,DELETE等method,就是REST所表述的状态了。

其次,大家都认同的一点就是,REST 指导的是一种思路,而不是一种具型的风格,那么何必在乎别人怎么看?别人一看能明白是一个resource,固然不错,但看上去不像有如何?我的观点阐述的很清楚,这是 friendly url 的范畴,与表象无关,与状态迁移无关。

最后,假如是 http://www.example.com/a?id=1 又如何,更加不像了对吗?但是一样能用,一样能很 RESTful 的操作对应的资源。突然想到一个更加好的例子,哪就是 *URI* 本身,互联网上资源的标识,是完整的 URI,而不是其中的 products 或者是 id,是一个整体。至于这个标识好不好读,什么形式,不会有本质的影响,论文中提到这一点,是为了阐述这个概念,而不是说明“形式很重要”
3 请登录后投票
   发表时间:2008-11-28  
我一直以为RESTful的优势在于架构无状态……
0 请登录后投票
   发表时间:2008-11-28  
hozaka 写道
恰恰相反,举这样一个在很多人看来没办法说明REST的例子,正是我的本意。
引用
从这个URL分析,http method是GET,无论我RESTFUL与否,都是GET, 有什么区别么?


首先,光从一个URL是没有办法断定所谓GET还是POST,或者是PUT,DELETE,HEAD等等,即使是我所举的这样一个例子,只要能响应POST,PUT,DELETE等method,就是REST所表述的状态了。

其次,大家都认同的一点就是,REST 指导的是一种思路,而不是一种具型的风格,那么何必在乎别人怎么看?别人一看能明白是一个resource,固然不错,但看上去不像有如何?我的观点阐述的很清楚,这是 friendly url 的范畴,与表象无关,与状态迁移无关。

最后,假如是 http://www.example.com/a?id=1 又如何,更加不像了对吗?但是一样能用,一样能很 RESTful 的操作对应的资源。突然想到一个更加好的例子,哪就是 *URI* 本身,互联网上资源的标识,是完整的 URI,而不是其中的 products 或者是 id,是一个整体。至于这个标识好不好读,什么形式,不会有本质的影响,论文中提到这一点,是为了阐述这个概念,而不是说明“形式很重要”


其实你的理解和思路跟阿里软件是一样的,他们提供的据称是RESTFUL的OPEN API都是这样的:
http://....../sip?apiName=&appId=&nick=&fields=&................
0 请登录后投票
   发表时间:2008-11-28  
URL对资源的描述的合理程度,如同你写代码的变量命名,好与坏不会影响执行的结果,但是会妨碍别人理解代码。
0 请登录后投票
   发表时间:2008-11-28  
javaeye_fan 写道
kaven 写道
dennis_zane 写道
hozaka 写道
没必要一味的死扣 RESTful 的概念,好像全世界的 rails 应用非要 REST 不可。有这个时间去窥视 URL,还不如花这点时间去真正理解一下什么叫做 REST。

顺便提一下,REST 早在 rails 以前很长时间就已经有了,有兴趣的可以去查 HTTP 协议的历史,多学习一点背景知识,没必要纠结在这种表面问题上 - 居然已经到了死抠的地步了

恩,您很牛。我比较无语的是,我个人的一个小小疑问,您能扯这么远,您从哪点看出我死扣REST了?是你的好为人师吧。


没有高超的javascript技能,很难完全用RESTful,所以完全的RESTful对rails来说是件很简单的事情,但是对javascript要求太高了。

 

无知者无所谓,javascript和restful连1分钱的关系也没有!而且ajax容易破坏restful的原则

 

ajax怎么就容易破坏restful原则了? 如果没有ajax,浏览器端如何put,delete?

0 请登录后投票
   发表时间:2008-11-28  
hozaka 写道
没必要一味的死扣 RESTful 的概念,好像全世界的 rails 应用非要 REST 不可。有这个时间去窥视 URL,还不如花这点时间去真正理解一下什么叫做 REST。

顺便提一下,REST 早在 rails 以前很长时间就已经有了,有兴趣的可以去查 HTTP 协议的历史,多学习一点背景知识,没必要纠结在这种表面问题上 - 居然已经到了死抠的地步了


不错,至少告诉我们应该跳出Rails来理解REST.这个我觉得还是很有必要的.
0 请登录后投票
   发表时间:2008-11-28  
tianhen 写道
javaeye_fan 写道
kaven 写道
dennis_zane 写道
hozaka 写道
没必要一味的死扣 RESTful 的概念,好像全世界的 rails 应用非要 REST 不可。有这个时间去窥视 URL,还不如花这点时间去真正理解一下什么叫做 REST。

顺便提一下,REST 早在 rails 以前很长时间就已经有了,有兴趣的可以去查 HTTP 协议的历史,多学习一点背景知识,没必要纠结在这种表面问题上 - 居然已经到了死抠的地步了

恩,您很牛。我比较无语的是,我个人的一个小小疑问,您能扯这么远,您从哪点看出我死扣REST了?是你的好为人师吧。


没有高超的javascript技能,很难完全用RESTful,所以完全的RESTful对rails来说是件很简单的事情,但是对javascript要求太高了。

 

无知者无所谓,javascript和restful连1分钱的关系也没有!而且ajax容易破坏restful的原则

 

ajax怎么就容易破坏restful原则了? 如果没有ajax,浏览器端如何put,delete?

两种方式:1.浏览器原生支持

2.替代方案(可以借鉴RoR的重载的POST方法或者在http头标记)

ajax还真和REST没关系,你要搞清楚,REST是一组设计约束,不是某种具体实现,不要和某种具体技术挂钩起来

0 请登录后投票
论坛首页 编程语言技术版

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