从Sinatra发送DELETE请求

seb*_*ger 19 ruby rest httprequest sinatra http-delete

我正在尝试开发RESTful Sinatra应用程序.现在,我知道如何用类似的方式响应删除请求

delete '/user/:id' do |id|
   #do something in the model
end
Run Code Online (Sandbox Code Playgroud)

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

到目前为止我找到的唯一解决方案是通过jQuery发送DELETE请求:如何在jQuery中发送PUT/DELETE请求?

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

Zim*_*bao 27

在代码中添加以下行.

use Rack::MethodOverride
Run Code Online (Sandbox Code Playgroud)

它将帮助您解释带有参数" _method"的post方法,其值为" delete".然后你就可以写了

delete '/user/:id' do |id|
Run Code Online (Sandbox Code Playgroud)

  • 事实上,如果他使用Modular应用程序,我就必须这样做.Sinatra Classy应用程序默认设置此设置. (5认同)
  • 对于 Sinatra 模块化风格,您可以将其添加到继承自 Sinatra::Base 的应用程序类中,而不是“use Rack::MethodOverride”:“set :method_override, true” (2认同)

shi*_*ara 16

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

当您使用此特定参数对表单进行POST时,您将在sinatra中执行DELETE请求.

喜欢 :

<form action="/search" method="post">
  <div style="margin:0;padding:0">
    <input name="_method" type="hidden" value="delete" />
  </div>
</form>
Run Code Online (Sandbox Code Playgroud)

它与PUT方法相同


小智 5

另一种方法是使用Curl:

curl -X DELETE http://host/user/1
Run Code Online (Sandbox Code Playgroud)