We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
UPDATE: You can now use the built-in PathParams middleware
PathParams
(old version below)
by @nicolasgarnil
Sometimes you may want to keep the URL as template with parameters placeholders to report it (think metrics) and later replace it with real params.
defmodule MyAPI.Middleware.UrlBuilder do @moduledoc """ Builds the request url """ @behaviour Tesla.Middleware @impl Tesla.Middleware def call(env, next, _) do url = build_url(env.url, env.opts[:params]) opts = Keyword.merge(env.opts, url: env.url) Tesla.run(%{env | url: url, opts: opts}, next) end defp build_url(url, nil), do: url defp build_url(url, params) do Enum.reduce(params, url, fn {k, v}, u -> String.replace(u, ":#{k}", to_string(v)) end) end end
defmodule MyAPI do use Tesla plug Tesla.Middleware.BaseUrl, "http://example.com" plug MyAPI.Middleware.UrlBuilder def get_user(user_id) do get("/user/:id", opts: [params: [id: user_id]]) end end