ruby-on-rails - 对 PUT 使用典型的 GET 操作有什么坏处吗? (平静地说)

标签 ruby-on-rails

我有一个不需要表单的操作。所以它实际上只需要一个“编辑”方法,而不是 RESTful 的“编辑”-->“更新”。有什么理由不这样做或者有更好的方法吗?

def edit
  #Do a POST(PUT)
end

最佳答案

危害在于用户可以轻松导航到该 URL 并执行潜在的破坏性操作。

/noform/edit   #URL typed by user => Action Performed
/noform/update #URL typed by user => Error is thrown, No Action Performed

正常的浏览体验会向服务器生成 GET 请求。假设是,您可以轻松导航到(或在地址栏中输入)的任何页面都不会执行任何数据更改功能。

通过表单提交或 AJAX 请求生成的 POST 请求期望得到服务器上数据更改的结果。

类似地,PUTDELETE 的两个 Rails“伪造”版本也不是您可以简单地使用浏览器导航到的操作。

解决方案

解决方案是仅使用 update 操作,并且您最初链接到 edit 的位置使用如下所示的内容:

button_to "Add new tracker", noform_path, :method => :put

如果存在任何类型的错误,您可能仍然需要一个编辑路径来向用户显示,以便他们可以更正某些内容。但根据您的描述,单个 update 操作应该可以解决问题。

关于ruby-on-rails - 对 PUT 使用典型的 GET 操作有什么坏处吗? (平静地说),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170125/

相关文章:

mysql - Has_many 与自定义主键的关系不起作用

ruby-on-rails - Resque 启 Action 业,但不执行任何操作

ruby-on-rails - rails SQL 查询报告使用 postgres 失败但从 psql 命令行工具成功

ruby-on-rails - 我无法让 rails 插件 wicked_pdf 工作

ruby-on-rails - Rails 'rake test' 在创建新的 Rails 项目后立即运行两次测试

ruby-on-rails - Rails 环境变量与 Rails 5.2 凭据

ruby-on-rails - 关联关联的 Rails 作用域

jquery - ruby on rails ajax错误处理

css - Rails - 如果设置了 CSS 属性宽度或填充,则通知可见

ruby-on-rails - Ruby on Rails 3 和 Google 图书搜索