sttp là thư viện Scala HTTP mà tất cả chúng ta đang chờ đợi!
Nó có một DSL thông thạo để tạo và thực hiện các yêu cầu (các mẫu mã từ README của họ):
val request = sttp
.cookie("session", "*!@#!@!$")
.body(file)
.put(uri"http://httpbin.org/put")
.auth.basic("me", "1234")
.header("Custom-Header", "Custom-Value")
.response(asByteArray)
Nó hỗ trợ các cuộc gọi đồng bộ, không đồng bộ và truyền trực tuyến thông qua các phần phụ trợ có thể cắm được, bao gồm Akka-HTTP (trước đây là Spray) và AsyncHttpClient (Netty) đáng kính:
implicit val sttpHandler = AsyncHttpClientFutureHandler()
val futureFirstResponse: Future[Response[String]] = request.send()
Nó hỗ trợ scala.concurrent.Future
, scalaz.concurrent.Task
, monix.eval.Task
, và cats.effect.IO
- tất cả các Scala lớn IO đơn nguyên thư viện.
Ngoài ra, nó còn có một số thủ thuật bổ sung:
val test = "chrabąszcz majowy"
val testUri: Uri = uri"http://httpbin.org/get?bug=$test"
- Nó hỗ trợ bộ mã hóa / giải mã cho các cơ quan / phản hồi yêu cầu, ví dụ như JSON qua Circe:
import com.softwaremill.sttp.circe._
val response: Either[io.circe.Error, Response] =
sttp
.post(uri"...")
.body(requestPayload)
.response(asJson[Response])
.send()
Cuối cùng, nó được duy trì bởi những người đáng tin cậy tại softwaremill và nó có tài liệu tuyệt vời .