sttp ist die Scala HTTP-Bibliothek, auf die wir alle gewartet haben!
Es verfügt über ein fließendes DSL zum Bilden und Ausführen von Anforderungen (Codebeispiele aus der README-Datei):
val request = sttp
.cookie("session", "*!@#!@!$")
.body(file)
.put(uri"http://httpbin.org/put")
.auth.basic("me", "1234")
.header("Custom-Header", "Custom-Value")
.response(asByteArray)
Es unterstützt synchrone, asynchrone und Streaming-Anrufe über steckbare Backends, einschließlich Akka-HTTP (ehemals Spray) und des ehrwürdigen AsyncHttpClient (Netty):
implicit val sttpHandler = AsyncHttpClientFutureHandler()
val futureFirstResponse: Future[Response[String]] = request.send()
Es unterstützt scala.concurrent.Future
, scalaz.concurrent.Task
, monix.eval.Task
, und cats.effect.IO
- alle wichtigen Scala IO Monade Bibliotheken.
Außerdem hat es ein paar zusätzliche Tricks im Ärmel:
val test = "chrabąszcz majowy"
val testUri: Uri = uri"http://httpbin.org/get?bug=$test"
- Es unterstützt Encoder / Decoder für Anforderungskörper / Antworten, z. B. JSON über Circe:
import com.softwaremill.sttp.circe._
val response: Either[io.circe.Error, Response] =
sttp
.post(uri"...")
.body(requestPayload)
.response(asJson[Response])
.send()
Schließlich wird es von den zuverlässigen Mitarbeitern von softwaremill gepflegt und verfügt über eine hervorragende Dokumentation .