2017-03-02 3 views
1

Ich entwickle einen einfachen HTTP-Server mit Akka-Http in Scala.Echo einfacher HTTP-Server mit Akka Http in Scala

Mein Code ist wie unten angegeben:

object HttpServer extends App { 
    override def main(args: Array[String]): Unit = { 

     implicit val system = ActorSystem("my-system") 
     implicit val materializer = ActorMaterializer() 

     implicit val executionContext = system.dispatcher 

     val route : Route = post { 
      path("echo") { 
       val json = ??? 
       complete((StatusCodes.OK, json)) 
      } 
     } 

     val bindingFuture = Http().bindAndHandle(route, "localhost", 8080) 

     println(s"Server online at http://localhost:8080/\nPress RETURN to stop...") 
     StdIn.readLine() 
     bindingFuture.flatMap(_.unbind()) 
     port.onComplete(_ => system.terminate()) 
    } 
} 

Ich weiß Scala noch nicht genug. Dafür brauche ich etwas Hilfe.

Ich weiß nicht, wie ich JSON von Http POST Körper bekommen kann, um diese JSON an Client zurückzugeben.

+0

Sie können beginnen, indem Sie hier lesen http://doc.akka.io/docs/akka-http/10.0.0/scala/http/common/json-support.html – mfirry

+0

Danke für deine Antwort. Ich war in diesem Netz, aber ich habe diesen Bereich nicht gesehen. Jetzt funktioniert es perfekt. –

Antwort

4

Sie benötigen nur einen Extraktor, um Ihre Route Definition hinzuzufügen:

val route : Route = post { 
    path("echo") { 
     entity(as[String]) { json =>  
     complete(json) 
     } 
    } 

Beachten Sie, dass Sie nicht brauchen, explizit den Statuscode zu setzen, als akka-http automatisch Status 200 OK gesetzt wird für Sie, wenn Sie übergeben einen Wert an complete