View Source Tesla.Middleware behaviour (tesla v1.7.0)
The middleware specification.
Middleware is an extension of basic Tesla functionality. It is a module that must
implement Tesla.Middleware.call/3.
middleware-options
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
Writing custom middleware is as simple as creating a module implementing Tesla.Middleware.call/3.
See Tesla.Middleware.call/3 for details.
examples
Examples
defmodule MyProject.InspectHeadersMiddleware do
@behaviour Tesla.Middleware
@impl true
def call(env, next, _options) do
IO.inspect(env.headers)
with {:ok, env} <- Tesla.run(env, next) do
IO.inspect(env.headers)
{:ok, env}
end
end
end
Link to this section Summary
Callbacks
Invoked when a request runs.
Link to this section Callbacks
@callback call(env :: Tesla.Env.t(), next :: Tesla.Env.stack(), options :: any()) :: Tesla.Env.result()
Invoked when a request runs.
- (optionally) read and/or writes request data
- calls
Tesla.run/2 - (optionally) read and/or writes response data
arguments
Arguments
env-Tesla.Envstruct that stores request/response datanext- middlewares that should be called after current oneoptions- middleware options provided by user