View Source Any HTTP
Elixir library which wraps the main HTTP libraries. It allows the final project to decide which HTTP library they want to use and provide an unified interface.
Installation
def deps do
[
{:any_http, "~> 0.1"}
]
end
Configuration
Declare your favorite HTTP library in the configuration
config :any_http, client_adapter: AnyHttp.Adapters.Req
Ensure, you added the corresponding dependency for the adapter:
def deps do
[
{:req, "~> 0.3"}
]
end
Usage
Just call the AnyHttp
module to interact with HTTP:
AnyHttp.post(
# Provide the URL as a string or an URI
"https://my_server/api",
# Provide the HTTP headers as map or list of tuple, put nil if none
[{"content-type", "application/json"}],
# Provide the body, put nil if none
%{hello: "world"},
# Provide the adapter options, can be ommited
receive_timeout: :timer.seconds(5)
)
The result will look like:
{:ok,
%AnyHttp.Response{
status: 201,
headers: [{"content-type", "application/json"}],
body: %{"bye" => "world"}
}
}