diff options
Diffstat (limited to 'docs/backends/akkahttp.rst')
-rw-r--r-- | docs/backends/akkahttp.rst | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/docs/backends/akkahttp.rst b/docs/backends/akkahttp.rst new file mode 100644 index 0000000..41e3a7c --- /dev/null +++ b/docs/backends/akkahttp.rst @@ -0,0 +1,52 @@ +``AkkaHttpBackend`` +=================== + +To use, add the following dependency to your project:: + + "com.softwaremill.sttp" %% "akka-http-backend" % "0.0.20" + +This backend depends on `akka-http <http://doc.akka.io/docs/akka-http/current/scala/http/>`_. +A fully **asynchronous** backend. Sending a request returns a response wrapped +in a ``Future``. + +Next you'll need to add an implicit value:: + + implicit val sttpBackend = AkkaHttpBackend() + + // or, if you'd like to use an existing actor system: + implicit val sttpBackend = AkkaHttpBackend.usingActorSystem(actorSystem) + +This backend supports sending and receiving +`akka-streams <http://doc.akka.io/docs/akka/current/scala/stream/index.html>`_ +streams of type ``akka.stream.scaladsl.Source[ByteString, Any]``. + +To set the request body as a stream:: + + import com.softwaremill.sttp._ + import com.softwaremill.sttp.akkahttp._ + + import akka.stream.scaladsl.Source + import akka.util.ByteString + + val source: Source[ByteString, Any] = ... + + sttp + .streamBody(source) + .post(uri"...") + +To receive the response body as a stream:: + + import com.softwaremill.sttp._ + import com.softwaremill.sttp.akkahttp._ + + import akka.stream.scaladsl.Source + import akka.util.ByteString + + implicit val sttpBackend = AkkaHttpBackend() + + val response: Future[Response[Source[ByteString, Any]]] = + sttp + .post(uri"...") + .response(asStream[Source[ByteString, Any]]) + .send() + |