加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 覆盖Sinatra默认的NotFound错误页面

发布时间:2020-12-16 21:48:47 所属栏目:百科 来源:网络整理
导读:有没有办法覆盖sinatra默认的NotFound错误页面(“Sinatra不知道这个ditty”)?我希望sinatra在没有找到正确的路由时,只显示一个纯粹的字符串为“方法未找到”,但是当我从路由内部引发404错误时,我希望它显示传入的错误消息. 像这样执行not_found块: not_fou
有没有办法覆盖sinatra默认的NotFound错误页面(“Sinatra不知道这个ditty”)?我希望sinatra在没有找到正确的路由时,只显示一个纯粹的字符串为“方法未找到”,但是当我从路由内部引发404错误时,我希望它显示传入的错误消息.

像这样执行not_found块:

not_found do
    'Method not found.' 
  end

工程,但它不是一个有效的选项,因为我想要能够抛出我自己的NotFound错误消息从这样的路由:

get '/' do
    begin
      # some processing that can raise an exception if resource not found
    rescue => e
      error 404,e.message.to_json
    end
  end

但是如预期的not_found块覆盖我的错误消息.

解决方法

也许比 the accepted answer中提出的更为优雅的解决方案是仅救出Sinatra :: NotFound,而不是使用错误(404)或not_found样式.
error Sinatra::NotFound do
  content_type 'text/plain'
  [404,'Not Found']
end

这样就阻止了你没有定义的路由的“sinatra不知道这个ditty”的默认页面,但并不妨碍显式返回[404,“Something else”] – 样式响应.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读