列出凤凰 API

bex*_*ley 3 elixir phoenix-framework

我想要一个/api/api_endpoints/列出所有公共 api 端点的端点。类似于mix phx.routes,但我只想列出类似的内容

...
GET /api/users
PUT /api/users/name
...
Run Code Online (Sandbox Code Playgroud)

像这样的东西。我查看了文档,但没有看到任何列出路线的内容。

Mar*_*rio 5

没有内置任何东西,但是对于您想要的简单的东西,您总是可以自己推出。所有路由都作为结构列表存储在路由器内Phoenix.Router.Route。例如在一个名为的项目中Residential

iex(1)> ResidentialWeb.Router.__routes__
[%Phoenix.Router.Route{assigns: %{}, helper: "page", host: nil, kind: :match,
opts: :index, path: "/", pipe_through: [:browser],
plug: ResidentialWeb.PageController, private: %{}, verb: :get},
%Phoenix.Router.Route{assigns: %{}, helper: "user", host: nil, kind: :match,
opts: :index, path: "/users", pipe_through: [:browser],
plug: ResidentialWeb.UserController, private: %{}, verb: :get},
%Phoenix.Router.Route{assigns: %{}, helper: "user", host: nil, kind: :match,
opts: :edit, path: "/users/:id/edit", pipe_through: [:browser],
plug: ResidentialWeb.UserController, private: %{}, verb: :get},
Run Code Online (Sandbox Code Playgroud)

您可以映射它们并提取verbpath并根据需要显示它们。

mix phx.routes如果你看一下实现,这几乎是如何工作的

  • 另请注意,`__routes__` 函数是内部 API,因此可以更改或删除它,恕不另行通知。 (2认同)