akka-http:完整的流程请求

时间:2016-03-29 20:24:47

标签: akka-stream akka-http

假设我已经设置了一个任意复杂的Flow[HttpRequest, HttpResponse, Unit]

我已经可以使用所述流来处理传入的请求

Http().bindAndHandle(flow, "0.0.0.0", 8080)

现在我想添加一些现有指令,例如logRequestResult("my-service"){...} 有没有办法将这个指令与我的流程结合起来?我想我正在寻找另一个指令,类似于

def completeWithFlow(flow: Flow): Route

这有可能吗?

N.B。:logRequestResult就是一个例子,我的问题适用于任何可能有用的指令。

2 个答案:

答案 0 :(得分:6)

结果是一种(也许是唯一的)方法是连接和实现新流,并将提取的请求提供给它。以下示例

  val myFlow: Flow[HttpRequest, HttpResponse, NotUsed] = ???

  val route =
    get {
      logRequestResult("my-service") {
        extract(_.request) { req ⇒
          val futureResponse = Source.single(req).via(myFlow).runWith(Sink.head)
          complete(futureResponse)
        }
      }
    }

  Http().bindAndHandle(route, "127.0.0.1", 9000)

答案 1 :(得分:0)

http://doc.akka.io/docs/akka/2.4.2/scala/http/routing-dsl/overview.html

您在寻找name = ["Alan", "Susan", "Margaret"] age = [7, 34, 66] resident = [0, 1, 0] if resident = 0: print ("name is {}, age is {} and they do not live in place".format(name[], age[])) 还是route2HandlerFlow

我相信Route.handlerFlow将基于Route.handlerFlow s。

例如/

implicit