Using as an sttp clientΒΆ

Add the dependency:

"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "0.15.4"

To make requests using an endpoint definition using the sttp client, import:

import sttp.tapir.client.sttp._

This adds the two extension methods to any Endpoint:

  • toSttpRequestUnsafe(Uri): given the base URI returns a function, which might throw an exception if decoding of the result fails

    I => Request[Either[E, O], Nothing]
  • toSttpRequest(Uri): given the base URI returns a function, which represents decoding errors as the DecodeResult class

    I => Request[DecodeResult[Either[E, O]], Nothing]

Note that these are a one-argument functions, where the single argument is the input of end endpoint. This might be a single type, a tuple, or a case class, depending on the endpoint description.

After providing the input parameters, a description of the request to be made is returned, with the input value encoded as appropriate request parameters: path, query, headers and body. This can be further customised and sent using any sttp backend. The response will then contain the decoded error or success values (note that this can be the body enriched with data from headers/status code).

See the runnable example for example usage.