从akkahttp路由类中提取逻辑,并为每个REST路径创建一个方法



我想用akkahttp:做这样的事情

// etc ... ~
path("abc" / "def") { m } // here I just define the path routing logic
// now here I take care of everything else.
// this works:
def m(request: RequestContext): Future[RouteResult] = {
request.complete("")
}

但问题开始了:

// but this will not!:
def m(request: RequestContext): Future[RouteResult] = get {
request.complete("")
}
// nor this!:
def m(request: RequestContext): Future[RouteResult] = get {
parameters('a) { a => complete("") }
}
// nor this!:
def m(request: RequestContext): Future[RouteResult] = get {
parameters('a) { a => complete("") }
}
// nor this!:
def m(request: RequestContext): Future[RouteResult] = get {
parameters('a) { a => request.complete("") }
}

有什么简单的方法可以绕过这个问题吗?我并不是真的对Scala/akka-http的任何Future功能感兴趣。我对这个级别的同步解决方案非常满意。

自己找到了答案。只需应用request:

def m(request: RequestContext): Future[RouteResult] = get {
request.complete("")
}(request)

最新更新