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 DELETE request. See request/1 or request/2 for options definition

Perform a DELETE request. See request/1 or request/2 for options definition

Perform a DELETE request. See request/1 or request/2 for options definition

Perform a GET request. See request/1 or request/2 for options definition

Perform a GET request. See request/1 or request/2 for options definition

Perform a GET request. See request/1 or request/2 for options definition

Perform a HEAD request. See request/1 or request/2 for options definition

Perform a HEAD request. See request/1 or request/2 for options definition

Perform a HEAD request. See request/1 or request/2 for options definition

Perform a OPTIONS request. See request/1 or request/2 for options definition

Perform a OPTIONS request. See request/1 or request/2 for options definition

Perform a OPTIONS request. See request/1 or request/2 for options definition

Perform a PATCH request. See request/1 or request/2 for options definition

Perform a PATCH request. See request/1 or request/2 for options definition

Perform a PATCH request. See request/1 or request/2 for options definition

Perform a POST request. See request/1 or request/2 for options definition

Perform a POST request. See request/1 or request/2 for options definition

Perform a POST request. See request/1 or request/2 for options definition

Perform a PUT request. See request/1 or request/2 for options definition

Perform a PUT request. See request/1 or request/2 for options definition

Perform a PUT request. See request/1 or request/2 for options definition

Perform a request. See request/2 for available options

Perform a request using client function

Perform a TRACE request. See request/1 or request/2 for options definition

Perform a TRACE request. See request/1 or request/2 for options definition

Perform a TRACE request. See request/1 or request/2 for options definition

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

alias(key)
build_url(url, query)
default_adapter()
default_middleware()
delete(url)

Specs

Perform a DELETE request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.delete("/users")
delete(client, url)

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])
delete(client, url, options)

Perform a DELETE request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.delete("/users", query: [page: 1])
get(url)

Specs

Perform a GET request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.get("/users")
get(client, url)

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])
get(client, url, options)

Perform a GET request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.get("/users", query: [page: 1])
head(url)

Specs

Perform a HEAD request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.head("/users")
head(client, url)

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])
head(client, url, options)

Perform a HEAD request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.head("/users", query: [page: 1])
options(url)

Specs

Perform a OPTIONS request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.options("/users")
options(client, url)

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])
options(client, url, options)

Perform a OPTIONS request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.options("/users", query: [page: 1])
patch(url, body)

Perform a PATCH request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.patch("/users", %{name: "Jon"})
patch(client, url, body)

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"])
patch(client, url, body, options)

Perform a PATCH request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
perform_request(module, options)
perform_request(module, client, options)
post(url, body)

Perform a POST request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.post("/users", %{name: "Jon"})
post(client, url, body)

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"])
post(client, url, body, options)

Perform a POST request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
prepare(module, stack)
put(url, body)

Perform a PUT request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.put("/users", %{name: "Jon"})
put(client, url, body)

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"])
put(client, url, body, options)

Perform a PUT request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
put_opt(env, key, value)
request(options)

Specs

request([option]) :: Tesla.Env.t

Perform a request. See request/2 for available options.

request(client, options)

Specs

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 using Tesla.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"})
run(env, list)
trace(url)

Specs

Perform a TRACE request. See request/1 or request/2 for options definition.

Example

iex> ExampleApi.trace("/users")
trace(client, url)

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])
trace(client, url, options)

Perform a TRACE request. See request/1 or request/2 for options definition.

Example

iex> myclient |> ExampleApi.trace("/users", query: [page: 1])

Macros

build_client(stack)

Dynamically build client from list of middlewares.

defmodule ExampleAPI do
  use Tesla

  def new(token) do
    Tesla.build_client([
      {Tesla.Middleware.Headers, %{"Authorization" => token}}
    ])
  end
end

client = ExampleAPI.new(token: "abc")
client |> ExampleAPI.get("/me")