v3.0.0-RC4
This is a preview release, containing most of the functionality planned for sttp v3. The code passes all tests, however the API might change.
sttp client v3 uses a new package name (sttp.client3) and organization (com.softwaremill.sttp.client3). This way old and new sttp client versions can be used side-by-side. Make sure to update your imports and build dependencies!
Breaking changes since v2:
SttpBackend trait
The trait now has 2, instead of 3 parameters. The "default" case of a backend with no additional capabilities changed:
SttpBackend[F, Nothing, NothingT] --> SttpBackend[F, Any]The second type parameter now contains a list of supported additional capabilities. This can include:
- an implementation of
Streams WebSockets
Finally, the type of supported streams is not given directly, but wrapped in a Streams object. For example, the types of the AkkaHttpBackend and AsyncHttpClientZioBackend backends now are:
SttpBackend[Future, AkkaStreams with WebSockets]
SttpBackend[Task, ZioStreams with WebSockets]Request type
The type describing a request has undergone similar changes, with the last type parameter specifying the requirements that a backend must meet in order of the request to be sent. The "default" description of a request which doesn't use websockets or streams changed:
Request[T, Nothing] -> Request[T, Any]Similarly, the type of ResponseAs changed.
The Request.send() method, which used an implicit SttpBackend is deprecated. Instead, use Request.send(backend), giving the backend explicitly.
SttpBackendStub
- method name change:
thenRespondWrapped -> thenRespondF - when nothing is stubbed, an exception (failed effect) is thrown, instead of returning 404
Other
ResponseError->ResponseException, but type aliases are providedResponseExceptionis parametrised with library-specific deserialisation exception type and http-error type. What previous wasResponseError[E]now would beResponseException[String, E]streamBodysets application/octet-stream as the content type by default- the default execution context used in the akka-http backend is different: instead of
global, the EC backing the provided actor system is used - for zio backends, the
sendmethod has been moved fromSttpClientto the package (for consistency with other zio libraries) - logging backends have been combined into a single one, exposing various configuration options