Error akka http compile

I am new to akka infrastructure and am now trying to set up a simple web service with this infrastructure.
write a simple akka-http application:

import akka.actor.ActorSystem import akka.http.scaladsl.Http import akka.http.scaladsl.server.Directives._ import akka.stream.ActorMaterializer import scala.io.StdIn object MainRunner extends App { implicit val system = ActorSystem("mySystem") implicit val materializer = ActorMaterializer implicit val ec = system.dispatcher val route = path("hello") { get { complete("Congratulation , this is your response") } } val bindingFuture = Http().bindAndHandle(route, "localhost", 8080) println(s"Server online at http://localhost:8080/\nPress RETURN to stop...") StdIn.readLine() // let it run until user presses return bindingFuture .flatMap(_.unbind()) // trigger unbinding from the port .onComplete(_ => system.terminate()) // and shutdown when done } 

get this error while compiling:

 Error:(34, 44) type mismatch; found : akka.http.scaladsl.server.Route (which expands to) akka.http.scaladsl.server.RequestContext => scala.concurrent.Future[akka.http.scaladsl.server.RouteResult] required: akka.stream.scaladsl.Flow[akka.http.scaladsl.model.HttpRequest,akka.http.scaladsl.model.HttpResponse,Any] val bindingFuture = Http().bindAndHandle(route, "localhost", 8080) 

How to fix it?

+5
source share
1 answer

This is just a mistake while creating your ActorMaterializer :

 implicit val materializer = ActorMaterializer 

should be replaced by

 implicit val materializer = ActorMaterializer() 

Given a valid materializer in scope, the implicit conversion between Route and Flow[HttpRequest, HttpResponse, _] should happen as expected, and the compiler should be happy.

+13
source

Source: https://habr.com/ru/post/1261347/


All Articles