blob: e1db7bc7664aa9f277c0b170007f67e143d8ec9a (
plain) (
tree)
|
|
.. _usage_examples:
Usage examples
==============
POST a form using the synchronous backend
-----------------------------------------
Required dependencies::
libraryDependencies ++= List("com.softwaremill.sttp" %% "core" % "1.1.14")
Example code::
import com.softwaremill.sttp._
val signup = Some("yes")
val request = sttp
// send the body as form data (x-www-form-urlencoded)
.body(Map("name" -> "John", "surname" -> "doe"))
// use an optional parameter in the URI
.post(uri"https://httpbin.org/post?signup=$signup")
implicit val backend = HttpURLConnectionBackend()
val response = request.send()
println(response.body)
println(response.headers)
GET and parse JSON using the akka-http backend and json4s
---------------------------------------------------------
Required dependencies::
libraryDependencies ++= List(
"com.softwaremill.sttp" %% "akka-http-backend" % "1.1.14",
"com.softwaremill.sttp" %% "json4s" % "1.1.14"
)
Example code::
import com.softwaremill.sttp._
import com.softwaremill.sttp.akkahttp._
import com.softwaremill.sttp.json4s._
import scala.concurrent.ExecutionContext.Implicits.global
case class HttpBinResponse(origin: String, headers: Map[String, String])
val request = sttp
.get(uri"https://httpbin.org/get")
.response(asJson[HttpBinResponse])
implicit val backend = AkkaHttpBackend()
val response: Future[Response[HttpBinResponse]] = request.send()
for {
r <- response
} {
println(s"Got response code: ${r.code}")
println(r.body)
backend.close()
}
Test an endpoint requiring multiple parameters
----------------------------------------------
Required dependencies::
libraryDependencies ++= List("com.softwaremill.sttp" %% "core" % "1.1.14")
Example code::
import com.softwaremill.sttp._
import com.softwaremill.sttp.testing._
implicit val backend = SttpBackendStub.synchronous
.whenRequestMatches(_.uri.paramsMap.contains("filter"))
.thenRespond("Filtered")
.whenRequestMatches(_.uri.path.contains("secret"))
.thenRespond("42")
val parameters1 = Map("filter" -> "name=mary", "sort" -> "asc")
println(
sttp
.get(uri"http://example.org?search=true&$parameters1")
.send()
.unsafeBody)
val parameters2 = Map("sort" -> "desc")
println(
sttp
.get(uri"http://example.org/secret/read?$parameters2")
.send()
.unsafeBody)
|