Plug v1.10.1 Plug behaviour View Source
The plug specification.
There are two kind of plugs: function plugs and module plugs.
Function plugs
A function plug is any function that receives a connection and a set of options and returns a connection. Its type signature must be:
(Plug.Conn.t, Plug.opts) :: Plug.Conn.tModule plugs
A module plug is an extension of the function plug. It is a module that must export:
- a
call/2function with the signature defined above - an
init/1function which takes a set of options and initializes it.
The result returned by init/1 is passed as second argument to call/2. Note
that init/1 may be called during compilation and as such it must not return
pids, ports or values that are specific to the runtime.
The API expected by a module plug is defined as a behaviour by the
Plug module (this module).
Examples
Here's an example of a function plug:
def json_header_plug(conn, opts) do
Plug.Conn.put_resp_content_type(conn, "application/json")
endHere's an example of a module plug:
defmodule JSONHeaderPlug do
import Plug.Conn
def init(opts) do
opts
end
def call(conn, _opts) do
put_resp_content_type(conn, "application/json")
end
endThe Plug pipeline
The Plug.Builder module provides conveniences for building plug
pipelines.
Link to this section Summary
Link to this section Types
Link to this section Callbacks
Specs
call(Plug.Conn.t(), opts()) :: Plug.Conn.t()