有一个选项可以添加一个顶级插头,用于存储父选项
private
你可以拿给孩子们
call
.
类似:
defmodule Example.Router do
def init(opts), do: opts
def call(conn, options) do
Example.RouterMatch.call(Plug.Conn.put_private(conn, :father_options, options), Example.RouterMatch.init(options))
end
end
defmodule Example.RouterMatch do
use Plug.Router
plug :match
plug :dispatch
forward "/check", to: Example.Route.Check
forward "/dispatch", to: Example.Plug.Dispatch
end
然后你可以在conn上获取选项
Example.Route.Check.call/2
.