简介
它是一个开源的库,为发送Http请求和处理返回的响应提供服务。
它保持了对请求和响应的适当的异常处理。所以现在我们讨论这个库的一些特性。
库的依赖性
为了使用sttp客户端的服务,在sbt项目的build.sbt中添加以下依赖项。
libraryDependencies += "com.softwaremill.sttp.client3" %% "core" % "3.3.18"
在我们的代码中导入给定的包以使用sttp客户端。
import sttp.client3._
实施
请求从后端发送,这是基于Scala和Java的HTTP客户端实现。
它们还与其他Scala堆栈集成,提供异步和同步计算,如Akka、zio、Htt4s等。
因为它提供了一个非常简单的机制来处理所有的请求和响应,因为它有预定义的请求和发送方法来实现。
例子
这是一个基本的sttp客户端例子,使用默认的jvm后端发送一个post请求。
import sttp.client3._
//valid Api url
val url = uri"https://localhost:8000/person"
// Data to send in a post request
val data = Map(
"name" -> "John",
"age" -> 25,
)
//default JVM backend
val backend: SttpBackend[Identity, Any] = HttpURLConnectionBackend()
//basic request to send using jvm backend
val sttpRequest = basicRequest.body(data)
.post(url)
.send(backend)
// response return in Either form.
val sttpResponse = sttpRequest.body match {
case Right(response) = println(response)
case Left(err) => println(s"Invalid request : $err")
}
在这个例子中,有一个简单的Api,它被用于有2个键值对的地图数据的post请求。所以我们要配置basicRequest,它由sttp.client3包提供,用于安排简单的请求。
现在我们必须使用默认的jvm后台**HttpURLConnectionBackend()**来发送post请求数据,或者我们也可以使用其他可用的后台,如akka、zio、http4s等。
为了获得响应,我们要匹配request.body,其结果为两种形式(右为成功,左为失败)。
认证
我们也使用sttp来认证请求,通过使用bearer-token认证,digest认证。授权头被添加到请求中,通过添加适当的凭证。
基本认证
sttpRequest.auth.basic("username","password")
承载令牌认证
val accessToken = "C78bfb142b4a03ecfa49c7f3d0f6f59ef11d8435cb644533b050d33"
sttpRequest.auth.bearer(accessToken)
结论
在这篇文章中,我们学习了如何使用sttp客户端来发送http请求。它还有更多的功能,也提供了不同的基于http的项目的简单实现。