Plug.Router

Plug.Router

A DSL to define a routing algorithm that works with Plug.

It provides a set of macros to generate routes. For example:

defmodule AppRouter do
  use Plug.Router

  plug :match
  plug :dispatch

  get "/hello" do
    send_resp(conn, 200, "world")
  end

  match _ do
    send_resp(conn, 404, "oops")
  end
end

Each route needs to return a connection, as per the Plug spec. A catch-all match is recommended to be defined as in the example above, otherwise routing fails with a function clause error.

The router is itself a plug, which means it can be invoked as:

AppRouter.call(conn, AppRouter.init([]))

Notice the router contains a plug pipeline and by default it requires two plugs: match and dispatch. 登录查看完整内容