21

如何指定 sinatra 以返回状态为 200 的空正文?

我可以做body "",但有没有更明确的方法来做到这一点?

4

2 回答 2

33

使用机架界面

文档中:

您可以返回任何可以是有效 Rack 响应、Rack 主体对象或 HTTP 状态代码的对象:

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

所以返回任何一个

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

应该做的伎俩。

使用助手

设置正文、状态码和标题中,介绍了辅助方法statusbody(和headers):

get '/nothing' do
  status 200
  body ''
end
于 2013-07-12T19:18:51.297 回答
10

同样来自文档

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

您还可以指定停止时的状态:

停止 410

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

halt 200

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

于 2016-12-31T19:13:12.760 回答