Ruby on rails AJAX+;Rails:创建路由时应该使用GET还是PUT?
我的问题:从最佳实践的角度来看,在Rails中使用AJAX时,我使用的HTML动词(例如,Ruby on rails AJAX+;Rails:创建路由时应该使用GET还是PUT?,ruby-on-rails,Ruby On Rails,我的问题:从最佳实践的角度来看,在Rails中使用AJAX时,我使用的HTML动词(例如,get)定义路由是否重要?基本上总是使用get可以吗 上下文:在我的Rails应用程序中,我构建了以下内容: 当用户选中HTML复选框时,会触发一个JQuery侦听器,该侦听器位于/app/assets/javascripts中的文件中 此.js文件对控制器/操作进行AJAX调用:foos\bar。我的JS将ID传递到动作中 为了路由这个请求,我将以下内容添加到routes.rb:get”/foos/ba
get
)定义路由是否重要?基本上总是使用get
可以吗
上下文:在我的Rails应用程序中,我构建了以下内容:
- 当用户选中HTML复选框时,会触发一个JQuery侦听器,该侦听器位于
中的文件中/app/assets/javascripts
- 此
文件对控制器/操作进行AJAX调用:.js
。我的JS将ID传递到动作中foos\bar
- 为了路由这个请求,我将以下内容添加到
:routes.rb
。这会告诉我的应用程序哪个控制器/操作应该处理AJAX调用get”/foos/bar=>“foos\bar”
- 控制器/操作可以很好地处理此请求。该操作获取ID作为URL参数,更新相关模型对象,最后将
返回给JS AJAX调用方200
我的问题是:在上面的示例中,在
routes.rb
中定义get
路由是否适合处理此AJAX请求?或者,这是一种糟糕的做法吗?我应该定义一个put
,因为从概念上讲,这就是我在这个工作流中所做的事情(即,我正在更新一个现有对象)?我担心的是,虽然这一切都很完美,但我打破了一些基本的MVC路由标准。如果您正在更新资源,它很可能是一个补丁
更新,这意味着您没有完全替换资源,而只是在更新它(这就是为什么PATCH
是Rails中更新的默认HTTP方法,而不是PUT
)
因此,是的,您使用
GET
更新资源违反了RESTful约定。GET
仅用于获取资源的表示形式,而不以任何方式进行更改。如果您正在更新资源,它很可能是一个补丁
更新,这意味着您没有完全替换资源但是我们只是在更新它(这就是为什么在Rails中,PATCH
是更新的默认HTTP方法,而不是PUT
)
因此,是的,使用GET
更新资源违反了RESTful约定。GET
仅用于获取资源的表示形式,而不以任何方式更改它