tesla v0.5.2 Tesla
A HTTP toolkit for building API clients using middlewares
Include Tesla module in your api client:
defmodule ExampleApi do
use Tesla
plug Tesla.Middleware.BaseURL, "http://api.example.com"
plug Tesla.Middleware.JSON
end
Summary
Functions
Perform a request. See request/2
for available options
Perform a request using client function
Macros
Dynamically build client from list of middlewares
Types
option ::
{:method, Tesla.Env.method} |
{:url, Tesla.Env.url} |
{:query, Tesla.Env.query} |
{:headers, Tesla.Env.headers} |
{:body, Tesla.Env.body} |
{:opts, Tesla.Env.opts}
Functions
Specs
delete(Tesla.Env.url) :: Tesla.Env.t
Perform a DELETE request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.delete("/users")
Specs
delete(Tesla.Env.client, Tesla.Env.url) :: Tesla.Env.t
delete(Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a DELETE request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.delete("/users")
iex> ExampleApi.delete("/users", query: [page: 1])
Specs
delete(Tesla.Env.client, Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a DELETE request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.delete("/users", query: [page: 1])
Specs
get(Tesla.Env.url) :: Tesla.Env.t
Perform a GET request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.get("/users")
Specs
get(Tesla.Env.client, Tesla.Env.url) :: Tesla.Env.t
get(Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a GET request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.get("/users")
iex> ExampleApi.get("/users", query: [page: 1])
Specs
get(Tesla.Env.client, Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a GET request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.get("/users", query: [page: 1])
Specs
head(Tesla.Env.url) :: Tesla.Env.t
Perform a HEAD request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.head("/users")
Specs
head(Tesla.Env.client, Tesla.Env.url) :: Tesla.Env.t
head(Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a HEAD request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.head("/users")
iex> ExampleApi.head("/users", query: [page: 1])
Specs
head(Tesla.Env.client, Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a HEAD request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.head("/users", query: [page: 1])
Specs
options(Tesla.Env.url) :: Tesla.Env.t
Perform a OPTIONS request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.options("/users")
Specs
options(Tesla.Env.client, Tesla.Env.url) :: Tesla.Env.t
options(Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a OPTIONS request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.options("/users")
iex> ExampleApi.options("/users", query: [page: 1])
Specs
options(Tesla.Env.client, Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a OPTIONS request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.options("/users", query: [page: 1])
Specs
patch(Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
Perform a PATCH request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.patch("/users", %{name: "Jon"})
Specs
patch(Tesla.Env.client, Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
patch(Tesla.Env.url, Tesla.Env.body, [option]) :: Tesla.Env.t
Perform a PATCH request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.patch("/users", %{name: "Jon"})
iex> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
Specs
patch(Tesla.Env.client, Tesla.Env.url, Tesla.Env.body, [option]) :: Tesla.Env.t
Perform a PATCH request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
Specs
post(Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
Perform a POST request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.post("/users", %{name: "Jon"})
Specs
post(Tesla.Env.client, Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
post(Tesla.Env.url, Tesla.Env.body, [option]) :: Tesla.Env.t
Perform a POST request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.post("/users", %{name: "Jon"})
iex> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
Specs
post(Tesla.Env.client, Tesla.Env.url, Tesla.Env.body, [option]) :: Tesla.Env.t
Perform a POST request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
Specs
put(Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
Perform a PUT request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.put("/users", %{name: "Jon"})
Specs
put(Tesla.Env.client, Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
put(Tesla.Env.url, Tesla.Env.body, [option]) :: Tesla.Env.t
Perform a PUT request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.put("/users", %{name: "Jon"})
iex> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
Specs
put(Tesla.Env.client, Tesla.Env.url, Tesla.Env.body, [option]) :: Tesla.Env.t
Perform a PUT request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
Specs
request([option]) :: Tesla.Env.t
Perform a request. See request/2
for available options.
Specs
request(Tesla.Env.client, [option]) :: Tesla.Env.t
Perform a request using client function
Options:
:method
- the request method, one of [:head, :get, :delete, :trace, :options, :post, :put, :patch]:url
- either full url e.g. “http://example.com/some/path” or just “/some/path” if usingTesla.Middleware.BaseUrl
:query
- a keyword list of query params, e.g.[page: 1, per_page: 100]
:headers
- a keyworld list of headers, e.g.[{"content-type", "text/plain"}]
:body
- depends on used middleware:- by default it can be a binary
- if using e.g. JSON encoding middleware it can be a nested map
- if adapter supports it it can be a Stream with any of the above
:opts
- custom, per-request middleware or adapter options
Examples:
iex> ExampleApi.request(method: :get, url: "/users/path")
You can also use shortcut methods like:
iex> ExampleApi.get("/users/1")
or
iex> myclient |> ExampleApi.post("/users", %{name: "Jon"})
Specs
trace(Tesla.Env.url) :: Tesla.Env.t
Perform a TRACE request.
See request/1
or request/2
for options definition.
Example
iex> ExampleApi.trace("/users")
Specs
trace(Tesla.Env.client, Tesla.Env.url) :: Tesla.Env.t
trace(Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a TRACE request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.trace("/users")
iex> ExampleApi.trace("/users", query: [page: 1])
Specs
trace(Tesla.Env.client, Tesla.Env.url, [option]) :: Tesla.Env.t
Perform a TRACE request.
See request/1
or request/2
for options definition.
Example
iex> myclient |> ExampleApi.trace("/users", query: [page: 1])