【问题标题】:Intercept WEBrick request拦截 WEBrick 请求
【发布时间】:2015-01-26 19:06:27
【问题描述】:

我有一个在不同硬件上运行的网络应用程序,其中大部分由智能电视和机顶盒组成。

我的网络应用程序包含一个 ruby​​ 脚本,用于设置应用程序以进行本地调试。此脚本构建我的应用程序,侦听文件更改,并使用简单的 WEBrick 服务器托管应用程序。

现在我在特定硬件上遇到了问题。在加载 Web 应用之前,该硬件希望从 POST 请求中获得对运行在与 Web 应用相同的主机上的 health_check API 的成功响应。

我只是希望拦截此请求并对其进行欺骗,以便硬件加载我的客户端。到目前为止,我已经做到了:

def start_server
    require 'webrick'

    root = File.expand_path 'public'
    request_callback = Proc.new { |req, res| 
        if req.path =~ /health_check/
            # return 200 response somehow?
        end
    }
    server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root, :RequestCallback => request_callback
    server.start
end

我可以修改响应对象以将状态设置为 200,但它最终仍然返回 404。

【问题讨论】:

    标签: ruby http rake webrick


    【解决方案1】:

    您无需“拦截”所有请求并检查特定路径。您只需要 mount_proc 使用 proc 处理特定路由。

    server.start之前添加以下内容:

    server.mount_proc '/health_check' do |req, res|
      res.body = 'what what' # your content here
    end
    

    您可能希望将其包装在检查中以确定您是否在任何需要此行为的自定义硬件上运行。

    请参阅 WEBrick 文档中的 Custom Behavior

    【讨论】:

      猜你喜欢
      • 2010-11-21
      • 1970-01-01
      • 2013-05-24
      • 2017-02-28
      • 2018-11-02
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多