Request bodies are decoded from JSON if present. Bodies containing invalid JSON are rejected with 400.
Response bodies are encoded into JSON. The content-type: application/json
header is added to encoded requests.
This is a rather heavy handed approach, only suited to applications that only consume JSON bodies.
Add the dep.
def deps do
[
{:elli_json_gate_keeper "~> 0.1.0"}
]
end
Add to your Elli middleware stack when starting Elli.
def start(_type, _args) do
import Supervisor.Spec, warn: false
middleware_stack = [
{Elli.JsonGateKeeper, []},
{YourElliHandler []}
]
elli_config = [
callback: :elli_middleware,
callback_args: [mods: middleware_stack]
]
children = [
worker(:elli, [elli_config])
]
Supervisor.start_link(children, strategy: :one_for_one, name: Dylan.Supervisor)
end