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

REST参数问题浅显的思考

浏览 4320 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-11  
看见一些这方面的讨论,和这段时间基于Rails的REST试验的感受,谈谈个人的看法。
其实这个题目有点不达意,REST根本不会有参数。也正因为这一点,非REST的Web程序遗留下来的思维--url有时需要参数来生成不同视图或资源,有些人认为REST可能办不到或者是需要解决的。其实一个REST架构的程序中这个问题是根本不存在的,绝对不需要考虑的。
如果非要从着非REST的思维来看,“解决”REST“参数”的办法如下:
1.“参数”隐含在URL中
REST把每个Web的东西看成资源,而每个资源都有唯一的标识。也就是说给予不同的URL会标识不同的资源,需要传递的‘参数’就包含在URL之中了。
如:.../form_do.jsp?id=5&flag=modify&type=1(这是以前项目的例子)其中flag代表操作、type代表模型类的类型。在Rails中会表示成为/controller_name/5;edit,Rails中我们用不同的控制器去操作不同的模型,所以这里controller_name就是前面type这个参数。前面的URL参数flag为delete、update、add(new)是一样的道理的。

2.使用POST
Rails的REST还没有做到所有的资源都能用URL标识,比如说:搜索。给定的关键词搜索后得到的东西也就是资源,还不能用唯一URL标识。
http://www.iteye.com/topic/70113这里已经描述解决方法了。

在使用REST架构程序时,仔细的设计程序的架构,使用嵌套资源(Nested Resources)也会去掉一些关于“参数”考虑。
我使用REST架构程序时,刚开始还考虑参数传递的的问题,随着学习的深入反而参数的问题消失的无影无踪。使用REST架构程序与大原先方式一样自然。

以上不知妥不妥,欢迎指正。
   发表时间:2007-06-11  

xvridan 写道:
1.“参数”隐含在URL中
REST把每个Web的东西看成资源,而每个资源都有唯一的标识。也就是说给予不同的URL会标识不同的资源,需要传递的‘参数’就包含在URL之中了。
如:.../form_do.jsp?id=5&flag=modify&type=1(这是以前项目的例子)其中flag代表操作、type代表模型类的类型。在Rails中会表示成为/controller_name/5;edit,Rails中我们用不同的控制器去操作不同的模型,所以这里controller_name就是前面type这个参数。前面的URL参数flag为delete、update、add(new)是一样的道理的。




如果使用ajax的话,就可以用/something/5     方法用put
0 请登录后投票
论坛首页 编程语言技术版

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