Akka HTTP路由发布实体字符串,与Future完成

时间:2018-01-22 07:46:09

标签: scala routes akka future akka-http

我有一个Akka HTTP守护进程。假设我想以JSON格式接收一些客户端数据并将其异步保存到数据库中。我在POST分支中写了一条路线:

 #!/usr/bin/env bash
if [ ! -d node-v6.9.1-linux-x64 ]  ; then
    wget https://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.gz
    tar -xzvf node-v6.9.1-linux-x64.tar.gz
    mkdir node
    mv node-v6.9.1-linux-x64/lib/node_modules node/
    mv node-v6.9.1-linux-x64/bin/* node/
    cd node
    ln -s node_modules/npm/bin/npm-cli.js npm
    cd ..
fi
node/npm install
node/npm run build
node/npm start

我发现path("product") { entity(as[String]) { json => val saveFuture: Future[Unit] = Serialization.read[Product](json).save() complete("") } } 可以放入complete语句中,如:

onSuccess

但我无法理解如何将它们粘合在一起。

1 个答案:

答案 0 :(得分:2)

您可以嵌套指令:

path("product") {
  entity(as[String]) { json =>
    val saveFuture: Future[Unit] = Serialization.read[Product](json).save()
    onSuccess(saveFuture) {
      complete("json was saved")
    }
  }
}