2017-03-02 102 views
1

我正在Scala中使用Akka-Http開發一個簡單的HTTP服務器。在斯卡拉回聲簡單的HTTP服務器與Akka Http

我的代碼如下:

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()) 
    } 
} 

我不知道斯卡拉不夠呢。爲此,我需要一些幫助。

我不知道如何從Http POST body獲取JSON以將該json返回給客戶端。

+0

你可能想從這裏開始閱讀http://doc.akka.io/docs/akka-http/10.0.0/scala/http/common/json-support.html – mfirry

+0

謝謝爲了您的迴應。我在網路上,但我沒有看到那部分。現在,它完美地工作。 –

回答

4

你只需要提取器添加到您的路線定義:

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

請注意,您不需要明確設置狀態碼,如阿卡-HTTP會自動設置狀態200 OK支持你你傳遞一個值到complete