【问题标题】:Padrino/Sinatra: how modify response in "after" filter?Padrino/Sinatra:如何修改“后”过滤器中的响应?
【发布时间】:2015-06-20 04:23:05
【问题描述】:

我真的无法理解它。假设我有一个控制器如下:

get :test do
  status 201
  body "test"
end

after do
  status 404
  body "not found"
end

现在,访问 /test 会产生状态为 404 且正文为“test”的响应。我该如何正确地做到这一点?

另外,我注意到我可以省略 body like

get :test do
  status 201
  "test"
end

并且响应保持不变,但稍后调用 response.body 返回空数组而不是实际内容。为什么会如此令人困惑,帕德里诺和西纳特拉之间是否存在某种不一致?我在这里错过了什么,有人愿意解释吗?

【问题讨论】:

  • 你想达到什么目的?
  • 如果您在实际测试范围内执行此操作(例如使用水豚) - 那么这是一个众所周知的问题。 response.body 更新速度不够快,无法在测试期间提供有意义的数据

标签: ruby sinatra response padrino


【解决方案1】:

我想你想覆盖 sefault Sinatra not found 消息? 你可以这样做

get :test do
  "test"
end

error Sinatra::NotFound do
  content_type 'text/plain'
  [404, 'Not Found']
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    相关资源
    最近更新 更多