Tesla.OpenAPI.QueryParams (tesla v1.18.1)

Copy Markdown View Source

A collection of query parameter definitions for Tesla.Middleware.Query.

Tesla.OpenAPI.QueryParams keeps static query parameter metadata separate from per-request values. Since query parameter definitions usually come from a static operation specification, prefer defining the collection in a module attribute, storing it in Tesla.Env.private/0, and passing only dynamic values through env.query.

defmodule MyApi.Operation.ListItems do
  alias Tesla.OpenAPI.{QueryParam, QueryParams}

  @query_params QueryParams.new!([
                  QueryParam.new!("filter"),
                  QueryParam.new!("ids", style: :pipe_delimited)
                ])

  @private QueryParams.put_private(@query_params)

  def request(client) do
    Tesla.get(client, "/items",
      query: %{
        "filter" => [status: "open", owner: "yordis"],
        "ids" => [10, 20],
        "debug" => true
      },
      private: @private
    )
  end
end

Summary

Types

t()

@opaque t()

Functions

new!(definitions)

@spec new!([Tesla.OpenAPI.QueryParam.t()]) :: t()

put_private(query_params)

@spec put_private(t()) :: Tesla.Env.private()

Adds query parameter definitions to Tesla.Env.private/0.

defmodule MyApi.Operation.ListItems do
  @query_params Tesla.OpenAPI.QueryParams.new!([Tesla.OpenAPI.QueryParam.new!("page")])
  @private Tesla.OpenAPI.QueryParams.put_private(@query_params)

  def request(client) do
    Tesla.get(client, "/items",
      query: %{"page" => 2},
      private: @private
    )
  end
end

put_private(private, query_params)

@spec put_private(Tesla.Env.private(), t()) :: Tesla.Env.private()