tesla v0.10.0 Tesla View Source

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

Link to this section Summary

Functions

Dynamically build client from list of middlewares

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

Link to this section Types

Link to this type option() View Source
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}

Link to this section Functions

Link to this macro build_client(pre, post \\ []) View Source (macro)

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")

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

Example

ExampleApi.delete("/users")

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

Example

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

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

Example

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

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

Example

ExampleApi.get("/users")

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

Example

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

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

Example

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

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

Example

ExampleApi.head("/users")

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

Example

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

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

Example

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

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

Example

ExampleApi.options("/users")

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

Example

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

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

Example

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

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

Example

ExampleApi.patch("/users", %{name: "Jon"})

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

Example

myclient |> ExampleApi.patch("/users", %{name: "Jon"})
ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])

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

Example

myclient |> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
Link to this function perform_request(module, client \\ nil, options) View Source

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

Example

ExampleApi.post("/users", %{name: "Jon"})

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

Example

myclient |> ExampleApi.post("/users", %{name: "Jon"})
ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])

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

Example

myclient |> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
Link to this function prepare(module, stack) View Source
prepare(atom, [any]) :: Tesla.Env.stack

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

Example

ExampleApi.put("/users", %{name: "Jon"})

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

Example

myclient |> ExampleApi.put("/users", %{name: "Jon"})
ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])

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

Example

myclient |> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
Link to this function put_opt(env, key, value) View Source

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

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:

ExampleApi.request(method: :get, url: "/users/path")

You can also use shortcut methods like:

ExampleApi.get("/users/1")

or

myclient |> ExampleApi.post("/users", %{name: "Jon"})
Link to this function run_default_adapter(env, opts \\ []) View Source

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

Example

ExampleApi.trace("/users")

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

Example

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

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

Example

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