拦截 WEBrick 请求
Intercept WEBrick request
我有一个在不同硬件上运行的网络应用程序,其中大部分由智能电视和机顶盒组成。
我的网络应用程序包含一个 ruby 脚本来设置应用程序以进行本地调试。此脚本构建我的应用程序,侦听文件更改,并使用简单的 WEBrick 服务器托管应用程序。
现在我 运行 遇到了一个关于特定硬件的问题。在加载网络应用程序之前,此硬件希望在与网络应用程序相同的主机上从 POST 请求到 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。
您不需要 "intercept" 所有请求并检查特定路径。您只需要 mount_proc
,用 proc 处理特定路由。
在server.start
前添加:
server.mount_proc '/health_check' do |req, res|
res.body = 'what what' # your content here
end
您可能希望将此包装在检查中以确定您是否 运行 在任何需要此行为的自定义硬件上。
请参阅 WEBrick 文档中的 Custom Behavior。
我有一个在不同硬件上运行的网络应用程序,其中大部分由智能电视和机顶盒组成。
我的网络应用程序包含一个 ruby 脚本来设置应用程序以进行本地调试。此脚本构建我的应用程序,侦听文件更改,并使用简单的 WEBrick 服务器托管应用程序。
现在我 运行 遇到了一个关于特定硬件的问题。在加载网络应用程序之前,此硬件希望在与网络应用程序相同的主机上从 POST 请求到 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。
您不需要 "intercept" 所有请求并检查特定路径。您只需要 mount_proc
,用 proc 处理特定路由。
在server.start
前添加:
server.mount_proc '/health_check' do |req, res|
res.body = 'what what' # your content here
end
您可能希望将此包装在检查中以确定您是否 运行 在任何需要此行为的自定义硬件上。
请参阅 WEBrick 文档中的 Custom Behavior。