用Sinatra回归空身

0xS*_*ina 17 ruby sinatra

如何指定sinatra返回状态为200的空体?

我能做到body ""但是有更明确的方法吗?

DMK*_*MKE 26

使用Rack接口

文档:

您可以返回任何有效的Rack响应,Rack body对象或HTTP状态代码的对象:

  • 一个包含三个元素的数组:[status(Fixnum),headers(Hash),response body(response to #each)]
  • 一个包含两个元素的数组:[status(Fixnum),响应体(响应#each)]
  • 一个对象,它响应#each并传递除给定块之外的任何字符串
  • 表示状态代码的Fixnum

所以返回任何一个

  1. [200, {}, ['']]
  2. [200, ['']]
  3. ['']
  4. 200

应该做的伎俩.

使用帮手

设置主体,状态代码和标题中,引入了辅助方法statusbody(和headers):

get '/nothing' do
  status 200
  body ''
end
Run Code Online (Sandbox Code Playgroud)


iai*_*ain 5

另外从文档

要立即在过滤器或路由中停止请求,请使用:

停止

您还可以在暂停时指定状态:

停止410

因此,在仅需要200状态的情况下,它将是:

halt 200
Run Code Online (Sandbox Code Playgroud)

halt是Sinatra向您提供的最有用的方法之一,值得阅读文档。我经常在处理路线时(例如缺少必需的参数时)使用它来返回错误消息。