tesla v0.9.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
Link to this section 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}
Link to this section Functions
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")
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
myclient |> ExampleApi.delete("/users")
ExampleApi.delete("/users", query: [page: 1])
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
myclient |> ExampleApi.delete("/users", query: [page: 1])
Perform a GET request.
See request/1
or request/2
for options definition.
Example
ExampleApi.get("/users")
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
myclient |> ExampleApi.get("/users")
ExampleApi.get("/users", query: [page: 1])
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
myclient |> ExampleApi.get("/users", query: [page: 1])
Perform a HEAD request.
See request/1
or request/2
for options definition.
Example
ExampleApi.head("/users")
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
myclient |> ExampleApi.head("/users")
ExampleApi.head("/users", query: [page: 1])
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
myclient |> ExampleApi.head("/users", query: [page: 1])
Perform a OPTIONS request.
See request/1
or request/2
for options definition.
Example
ExampleApi.options("/users")
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
myclient |> ExampleApi.options("/users")
ExampleApi.options("/users", query: [page: 1])
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
myclient |> ExampleApi.options("/users", query: [page: 1])
patch(Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
Perform a PATCH request.
See request/1
or request/2
for options definition.
Example
ExampleApi.patch("/users", %{name: "Jon"})
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
myclient |> ExampleApi.patch("/users", %{name: "Jon"})
ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
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
myclient |> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
post(Tesla.Env.url, Tesla.Env.body) :: Tesla.Env.t
Perform a POST request.
See request/1
or request/2
for options definition.
Example
ExampleApi.post("/users", %{name: "Jon"})
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
myclient |> ExampleApi.post("/users", %{name: "Jon"})
ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
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
myclient |> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
Perform a PUT request.
See request/1
or request/2
for options definition.
Example
ExampleApi.put("/users", %{name: "Jon"})
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
myclient |> ExampleApi.put("/users", %{name: "Jon"})
ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
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
myclient |> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
Perform a request. See request/2
for available options.
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:
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"})
Perform a TRACE request.
See request/1
or request/2
for options definition.
Example
ExampleApi.trace("/users")
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
myclient |> ExampleApi.trace("/users")
ExampleApi.trace("/users", query: [page: 1])
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
myclient |> ExampleApi.trace("/users", query: [page: 1])