Ruby中Rack中间件如何扩展Web应用功能?
require 'rack'
# 定义一个简单的Rack应用
simple_app = lambda { |env|
[200, {'Content-Type' => 'text/plain'}, ['Hello from Simple App!']]
}
# 定义一个Rack中间件
middleware = lambda { |app|
->(env) {
# 在应用处理请求之前可以进行一些操作
status, headers, response = app.call(env)
[status, headers, response] + ['Extra info from Middleware!']
}
}
# 使用middleware包装simple_app
wrapped_app = Rack::Builder.new {
use middleware
run simple_app
}.to_app
# 启动Rack服务器
Rack::Server.start(app: wrapped_app, Port: 9292)
这段代码首先定义了一个简单的Rack应用和一个Rack中间件。中间件使用一个闭包包装了原始的Rack应用,并在应用处理请求后附加额外的信息。然后,使用Rack::Builder
来构建包装后的应用,并通过Rack::Server
启动了一个Web服务器,监听9292端口。访问服务器时,你会看到中间件附加的信息。这个例子展示了如何使用Rack中间件来扩展Web应用的功能。
评论已关闭