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
Then we can implement in the router:
pipeline :web do
plug MyApp.CustomHeadersPlug
...
end
And that's it. Any request going through this pipeline will have in it's response x-custom-header: value
.
Top comments (0)