HttpRequest and HttpResponse
All 3 Apache Pekko HTTP Client API levels use the same basic model of HttpRequest
and HttpResponse
.
Creating requests¶
You can create simple GET
requests:
sourceHttpRequest(uri = "https://pekko.apache.org")
// or:
import org.apache.pekko.http.scaladsl.client.RequestBuilding.Get
Get("https://pekko.apache.org")
// with query params
Get("https://pekko.apache.org?foo=bar")
sourceHttpRequest.create("https://pekko.apache.org");
// with query params
HttpRequest.create("https://pekko.apache.org?foo=bar");
Note
HttpRequest
also takes Uri
as a parameter. Query String in URI section describes a fluent API for building URIs with query parameters.
Or more complicated ones, like this POST
:
sourceHttpRequest(
method = HttpMethods.POST,
uri = "https://userservice.example/users",
entity = HttpEntity(ContentTypes.`text/plain(UTF-8)`, "data"))
// or:
import org.apache.pekko.http.scaladsl.client.RequestBuilding.Post
Post("https://userservice.example/users", "data")
sourceHttpRequest.POST("https://userservice.example/users")
.withEntity(HttpEntities.create(ContentTypes.TEXT_PLAIN_UTF8, "data"));
See the API documentation of HttpRequest
for more information on how to customize your requests.
Processing responses¶
When you receive a response, you can use the Marshalling API to convert the response entity into an object:
sourceimport org.apache.pekko
import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import pekko.http.scaladsl.unmarshalling.Unmarshal
import spray.json.DefaultJsonProtocol._
import spray.json.RootJsonFormat
case class Pet(name: String)
implicit val petFormat: RootJsonFormat[Pet] = jsonFormat1(Pet.apply)
val pet: Future[Pet] = Unmarshal(response).to[Pet]
sourceCompletionStage<Pet> pet = Jackson.unmarshaller(Pet.class).unmarshal(response.entity(), system);
1.1.0