机架文件中的方法use和run方法有什么区别?它似乎run总是在最后config.ru,但似乎你应该只能使用use.也非常赞赏有启发性的资源.
use用于中间件
class MyCustomMiddleware
def initialize(app)
@app = app
end
def call(env)
if condition
env['set-header'] = 'Middleware Can modify the response & pass it into next middleware'
end
@app.call(env)
end
Run Code Online (Sandbox Code Playgroud)
run接受一个响应调用的参数,并返回带有 HTTP 响应代码(如 200)的最终 Rack 响应。
class MyApp
def self.call(env)
[200, { "Content-Type" => "text/html" }, ["OK"]]
end
end
Run Code Online (Sandbox Code Playgroud)
了解use &之间的区别run。让我们看看典型的机架应用程序的结构。
典型的 Rack 应用
程序 Rack 应用程序包括多个响应call但不返回最终机架响应的中间件和一个响应的对象,该对象call返回最终机架响应,其中包括 HTTP 响应代码(200,404,500 等)。因此,通常会有多个对象充当中间件,然后有一个对象返回带有响应代码的最终机架响应。
use&之间的区别run
现在有了这个,我们似乎可以use多次调用,每个中间件调用一次,而run在单个 Rack 应用程序中只能调用一次。souse只会调用中间件,而run会运行rack 对象,该对象将返回带有HTTP 状态代码的最终rack 响应。
例子config.ru
use MyCustomMiddleware
use MyCustomMiddleware2
use MyCustomMiddleware3
run MyApp
Run Code Online (Sandbox Code Playgroud)
如果以上有任何错误,请告诉我。所以我可以纠正它。
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |