Bootstrap

Vanilla 使用 Bootstrap 来做应用初始化的工作,用户可以在此对应用做一些配置(比如所使用的路由协议,使用何种视图引擎),对配置做一些初始化加载,初始化 WAF,初始化 Plugins 等操作,Vanilla 运行在 OpenResty content_by_lua\这个 Phrase,使用 Bootstrap 可以很好的实现对请求的细粒度控制*

Bootstrap 即类 application.bootstrap

Bootstrap 的实现其实是一个名为 application.bootstrap 的 Vanilla 类,实现了构造器初始化的属性只有一个(当前请求所使用的 dispatcher),我们只需要关注根据需求实现各种 init 方法即可,最后只要在 boot_list 方法返回的列表中的 init 方法都会被顺序执行

function Bootstrap:boot_list()
    return {
        -- Bootstrap.initWaf,
        -- Bootstrap.initErrorHandle,
        Bootstrap.initRoute,
        -- Bootstrap.initView,
        -- Bootstrap.initPlugin,
    }
end

function Bootstrap:__construct(dispatcher)
    self.dispatcher = dispatcher
end

上面的定义代表只有 initRoute 方法会被执行,而上面两个方法的实现我们并不需要关心和更改,只需要定义各种 init 方法,并更新 boot_list 返回的表元素即可,比如下面初始化路由协议的 initRoute

function Bootstrap:initRoute()
    local router = self.dispatcher:getRouter()
    local restful_route = restful:new(self.dispatcher:getRequest())
    router:addRoute(restful_route, true)
end

注:可以通过 self.dispatcher 获取当前请求相关的详细信息,并进行相关控制

Last updated