Parameters
A simple params validation package built on top of Ecto. I mostly use it to do simple typecasting on query params and simple required/optional parameter validation.
Installation
If available in Hex, the package can be installed
by adding parameters to your list of dependencies in mix.exs:
def deps do
[
{:parameters, "~> 0.2.0"}
]
end
Usage
defmodule MyApp.PostController do
use MyApp, :web
use Parameters
params :index do
optional :limit, :integer, default: 10
optional :page, :integer, default: 1
requires :query, :string
end
def index(conn, params) do
json(conn, params)
end
end
GET /posts?query=food
{"limit": 10, "page": 1, query: "food"}
GET /posts?limit=haha&page=hoho
=> %Parameters.InvalidError{plug_status: 400, changeset: changeset}
Invalid parameters
%{
limit: ["must be a number"],
page: ["must be a number"],
query: ["must be present"]
}
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/parameters.