Skip to content

amit115532/plug-params-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlugParamsValidation

Provides functionality for validating parameters

Installation

def deps do
  [
    {:plug_params_validation, "~> 0.1.0"}
  ]
end

Usage

use ParamsValidation

In order to get easy access to expect/1 body_params/0 and query_params/0 function/macros.

Next, add the following plug after plug :match

plug(ParamsValidation, log_errors?: true)

Now, every endpoint with expect/1 will validate what ever you specify in expect In order to access the expected variables, use body_params/0 macro

Example

post "/register", expect(body_params: %{first_name: :string, last_name: :string, age: :integer}) do
  first_name = body_params().first_name
  last_name = body_params().last_name
  age = body_params().age

  ...
end

if you would like to specify optional fields, you can pass a list to the :optional_body_params parameter in expect/1 optionals will be defaulted to nil. example:

post "/register", expect(body_params: %{first_name: :string, last_name: :string, age: :integer, phone: :string}, 
    optional_body_params: [:phone]) do
  first_name = body_params().first_name
  last_name = body_params().last_name
  age = body_params().age

  phone = body_params().phone || Phone.default_value 
  ...
end

this also works for GET requests: example:

get "/register/:name", expect(path_params: %{name: :string}) do
  # name can be used and trusted to be a string
  do_something_with_name(name)
  ...
end

You can mix between body_params optional_body_params path_params and query_params...

When a request with bad parameters happens, the plug response with status code 400 and the following body:

{
    "errors": {
        "last_name": [
            "can't be blank"
        ],
        "age": [
            "can't be blank"
        ]
    }
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages