akka-http如何接受无效的URI [不会解决]

时间:2017-01-30 11:55:06

标签: scala akka akka-http

我正在开发一个在具有不同查询参数的路径上调用的服务。我已将路由绑定到Http:

val route: Route = {
    get {
        pathPrefix("myRoute"){
            parameterMap{ params =>
                complete(
                   MyHandler.genExternResponse(params)
                )
            }
        }
    }

val bindingFuture = Http().bindAndHandleAsync(Route.asyncHandler(new myEndpoint().route), "localhost", 8081)

由于我对使用的参数没有影响,我无法消除包含未编码的特殊字符(如德语变音符号或商标符号)的调用。 例如

www.myhost.com/myRoute?param1=asd&param2=adäöü

我知道这些网址无效但其中一个要求是,即使是那些使用这些字符的请求也会被接受,我会使用网址编码处理它们。 问题是,当我调用上述服务时,akka-http拒绝响应状态400的请求,甚至没有将其交给我的代码。 有没有办法可以抓住这些请求并自己处理它们或让akka-http URL为我编码特殊字符。

编辑: 不会解决

1 个答案:

答案 0 :(得分:1)

试试这个

 val route: Route = {
  get {
    pathPrefix("myRoute"){
        parameters('params)
           { params =>
            complete(
               MyHandler.genExternResponse(params)
            )
        }
    }
}

val bindingFuture = Http().bindAndHandleAsync(Route.asyncHandler(new myEndpoint().route), "localhost", 8081)