DEV Community

Cover image for Plug me in
Javier Guerra
Javier Guerra

Posted on

Plug me in

Plug is a great tool. It brings a great way to extend, in a clear and encapsulated way, behaviors and state changes to controller flow.

For example, we can do a plug to set a custom header in a router pipe for Phoenix.

To do so we Crete a plug module

defmodule MyApp.CustomHeadersPlug do
  import Plug.Conn

  def init(opts), do: opts

  def call(conn) do
    conn
    |> put_resp_header("Custom-Header", "value")
  end
End
Enter fullscreen mode Exit fullscreen mode

Then we can implement in the router:

  pipeline :web do
    plug MyApp.CustomHeadersPlug
    ...
  end
Enter fullscreen mode Exit fullscreen mode

And that's it. Any request going through this pipeline will have in it's response x-custom-header: value.

Discussion (0)