这不是公共API,将来可能会更改,但是
MyApp.Router.__routes__/0
可用于获取所有路由。从中,您可以按控制器过滤并获取指向该控制器的所有路由。
我有一个标准
resources "/posts", PostController
在我的应用程序中。这里有一些
iex -S mix
该应用程序的输出:
iex(1)> MyApp.Router.__routes__ |> hd
%Phoenix.Router.Route{
assigns: %{},
helper: "page",
host: nil,
kind: :match,
opts: :index,
path: "/",
pipe_through: [:browser],
plug: MyApp.PageController,
private: %{},
verb: :get
}
iex(2)> for route <- MyApp.Router.__routes__,
...(2)> route.plug == MyApp.PostController,
...(2)> do: route.helper
["post", "post", "post", "post", "post", "post", nil, "post"]