raxx_method_override v0.4.1 Raxx.MethodOverride
Allows browser to emulate using HTTP verbs other than POST
.
Only the POST
method will be overridden,
It can be overridden to any of the listed HTTP verbs.
PUT
PATCH
DELETE
The emulated method is is denoted by the _method
parameter of the url query.
Examples
# override POST to PUT from query value
iex> request(:POST, "/?_method=PUT")
...> |> override_method()
...> |> Map.get(:method)
:PUT
# override POST to PATCH from query value
iex> request(:POST, "/?_method=PATCH")
...> |> override_method()
...> |> Map.get(:method)
:PATCH
# override POST to DELETE from query value
iex> request(:POST, "/?_method=DELETE")
...> |> override_method()
...> |> Map.get(:method)
:DELETE
# overridding method removes the _method field from the query
iex> request(:POST, "/?_method=PUT")
...> |> override_method()
...> |> Map.get(:query)
%{}
# override works with lowercase query value
iex> request(:POST, "/?_method=delete")
...> |> override_method()
...> |> Map.get(:method)
:DELETE
# # at the moment breaks deleberatly due to unknown method
# # does not allow unknown methods
# iex> request(:POST, "/?_method=PARTY")
# ...> |> override_method()
# ...> |> Map.get(:method)
# :POST
# leaves non-POST requests unmodified, e.g. GET
iex> request(:GET, "/?_method=DELETE")
...> |> override_method()
...> |> Map.get(:method)
:GET
# leaves non-POST requests unmodified, e.g. PUT
# Not entirely sure of the logic here.
iex> request(:PUT, "/?_method=DELETE")
...> |> override_method()
...> |> Map.get(:method)
:PUT
# queries with out a _method field are a no-op
iex> request(:POST, "/?other=PUT")
...> |> override_method()
...> |> Map.get(:method)
:POST
Link to this section Summary
Functions
Modify a requests method based on query parameters
Link to this section Functions
Link to this function
override_method(request)
Modify a requests method based on query parameters