如何在喷涂路由中解析获取请求参数?

时间:2013-11-15 22:39:07

标签: scala httprequest akka spray

这就是代码部分的样子

    get{
      respondWithMediaType(MediaTypes.`application/json`){
          entity(as[HttpRequest]){
            obj => complete{


                println(obj)
                "ok"
            }
          }
      }
    }~

我可以将请求映射到一个spray.http.HttpRequest对象,我可以从这个对象中提取uri但我想有一种更简单的方法来解析get请求中的参数而不是手动执行它。

例如,如果我的获取请求是

 http://localhost:8080/url?id=23434&age=24

我希望能够从此请求中获取ID和年龄

1 个答案:

答案 0 :(得分:30)

实际上你可以做得更好。在路由中有两个指令:parameterparameters,我想差异很明显,您也可以使用一些修饰符:!?。如果是!,则表示必须提供此参数或请求将被拒绝,?将返回一个选项,因此您可以在此情况下提供默认参数。例如:

val route: Route = {
  (path("search") & get) {
    parameter("q"!) { query =>
      ....
    }
  }
}

val route: Route = {
  (path("search") & get) {
    parameters("q"!, "filter" ? "all") { (query, filter) => 
      ...
    }
  }
}