Set default query params or serialize OpenAPI-style query values.
Default Query Params
Pass a keyword list or map as the middleware argument to merge default query params into every request:
defmodule MyClient do
def client do
Tesla.client([
{Tesla.Middleware.Query, [token: "some-token"]}
])
end
endModern OpenAPI Query Params
Use mode: :modern with Tesla.OpenAPI.QueryParams when generated clients need the
OpenAPI query parameter styles :form, :space_delimited,
:pipe_delimited, or :deep_object. Store the static parameter definitions
in request private data, then pass request values as a map. Other query params
remain normal Tesla query params:
query_params =
Tesla.OpenAPI.QueryParams.new!([
Tesla.OpenAPI.QueryParam.new!("filter"),
Tesla.OpenAPI.QueryParam.new!("ids", style: :pipe_delimited)
])
private = Tesla.OpenAPI.QueryParams.put_private(query_params)
client = Tesla.client([{Tesla.Middleware.Query, mode: :modern}])
Tesla.get(client, "/items",
query: %{
"filter" => [status: "open", owner: "yordis"],
"ids" => [1, 2, 3],
"debug" => true
},
private: private
)Object-valued query params cover OpenAPI schemas with additionalProperties.
Unknown top-level query params, such as "debug" above, pass through as
normal Tesla query params.