Ruby on rails AJAX+;Rails:创建路由时应该使用GET还是PUT?

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

我的问题:从最佳实践的角度来看,在Rails中使用AJAX时,我使用的HTML动词(例如,
get
)定义路由是否重要?基本上总是使用
get
可以吗

上下文:在我的Rails应用程序中,我构建了以下内容:

  • 当用户选中HTML复选框时,会触发一个JQuery侦听器,该侦听器位于
    /app/assets/javascripts
    中的文件中
  • .js
    文件对控制器/操作进行AJAX调用:
    foos\bar
    。我的JS将ID传递到动作中
  • 为了路由这个请求,我将以下内容添加到
    routes.rb
    get”/foos/bar=>“foos\bar”
    。这会告诉我的应用程序哪个控制器/操作应该处理AJAX调用
  • 控制器/操作可以很好地处理此请求。该操作获取ID作为URL参数,更新相关模型对象,最后将
    200
    返回给JS AJAX调用方
这一切都很好!没有问题--这里没有要解决的问题


我的问题是:在上面的示例中,在
routes.rb
中定义
get
路由是否适合处理此AJAX请求?或者,这是一种糟糕的做法吗?我应该定义一个
put
,因为从概念上讲,这就是我在这个工作流中所做的事情(即,我正在更新一个现有对象)?我担心的是,虽然这一切都很完美,但我打破了一些基本的MVC路由标准。

如果您正在更新资源,它很可能是一个
补丁
更新,这意味着您没有完全替换资源,而只是在更新它(这就是为什么
PATCH
是Rails中更新的默认HTTP方法,而不是
PUT


因此,是的,您使用
GET
更新资源违反了RESTful约定。
GET
仅用于获取资源的表示形式,而不以任何方式进行更改。

如果您正在更新资源,它很可能是一个
补丁
更新,这意味着您没有完全替换资源但是我们只是在更新它(这就是为什么在Rails中,
PATCH
是更新的默认HTTP方法,而不是
PUT

因此,是的,使用
GET
更新资源违反了RESTful约定。
GET
仅用于获取资源的表示形式,而不以任何方式更改它