从Sinatra发送DELETE请求

时间:2011-03-02 10:57:41

标签: ruby rest sinatra httprequest http-delete

我正在尝试开发RESTful Sinatra应用程序。现在,我知道如何用类似

的方式回复删除请求
delete '/user/:id' do |id|
   #do something in the model
end

我感兴趣的是如何执行该方法。我不能拥有DELETE而不是GET的链接,可以吗?

到目前为止,我找到的唯一解决方案是通过jQuery发送DELETE请求:How to send a PUT/DELETE request in jQuery?

我尝试在github上查看不同的RESTful Sinatra项目,但我的Ruby知识可能仅限于了解他们是如何做的。

5 个答案:

答案 0 :(得分:27)

在代码中添加以下行。

use Rack::MethodOverride

它可以帮助您解释带有参数“_method”的帖子方法,其值为“delete”。  然后你可以写

delete '/user/:id' do |id|

答案 1 :(得分:15)

我认为这就像Rails的方式。您需要使用'delete'值定义params'_method'并将其添加到表单上。

当您使用此特定参数发布表单时,您将在sinatra中执行DELETE请求。

喜欢:

<form action="/search" method="post">
  <div style="margin:0;padding:0">
    <input name="_method" type="hidden" value="delete" />
  </div>
</form>

与PUT方法相同

答案 2 :(得分:5)

另一种方法是使用Curl:

curl -X DELETE http://host/user/1

答案 3 :(得分:0)

  %form{:action => "/note/delete/#{@note.id}", :method => "post"}
    %input{:type => 'submit', :name=> "_method", :value => 'delete', :class => 'button'}

您也可以使用类似按钮

触发删除路线

答案 4 :(得分:0)

另见Call Sinatra delete route with jQuery有关如何使用前端的jQuery和JSON以及后端的Sinatra执行此操作。