Tesla.Middleware behaviour (tesla v1.4.0) View Source
The middleware specification
Middleware is an extension of basic Tesla functionality. It is a module that must
implement Tesla.Middleware.call/3.
Middleware options
Options can be passed to middleware in second param of Tesla.Builder.plug/2 macro:
plug Tesla.Middleware.BaseUrl, "https://example.com"or inside tuple in case of dynamic middleware (Tesla.client/1)
Tesla.client([{Tesla.Middleware.BaseUrl, "https://example.com"}])Writing custom middleware
Writing custom middleware is as simple as creating a module implementing Tesla.Middleware.call/3.
See Tesla.Middleware.call/3 for details.
Example
defmodule MyProject.InspectHeadersMiddleware do
  @behaviour Tesla.Middleware
  @impl Tesla.Middleware
  def call(env, next, options) do
    env
    |> inspect_headers(options)
    |> Tesla.run(next)
    |> inspect_headers(options)
  end
  defp inspect_headers(env, options) do
    IO.inspect(env.headers, options)
  end
endLink to this section Summary
Callbacks
Invoked when a requset runs.
Link to this section Callbacks
Specs
call(env :: Tesla.Env.t(), next :: Tesla.Env.stack(), options :: any()) :: Tesla.Env.result()
Invoked when a requset runs.
- (optionally) read and/or writes request data
- calls Tesla.run/2
- (optionally) read and/or writes response data
Arguments
- env-- Tesla.Envstruct that stores request/response data
- next- middlewares that should be called after current one
- options- middleware options provided by user