如何在akka-http中读取查询参数?

时间:2016-09-29 07:08:31

标签: scala akka-stream akka-http

我知道akka-http库在处理请求时编组和解组类类型。但是现在,我需要读取GET请求的请求参数。我尝试了parameter()方法并返回ParamDefAux类型,但我需要将这些值作为字符串类型

我在下面的问题中检查答案。

  1. How can I parse out get request parameters in spray-routing?

  2. Query parameters for GET requests using Akka HTTP (formally known as Spray)

  3. 但不能做我需要的。

    请告诉我如何从请求中提取查询参数。或者我如何从ParamDefAux

    中提取所需的值

    请求网址

    http://host:port/path?key=authType&value=Basic345
    

    获取方法定义

     val  propName = parameter("key")
     val  propValue = parameter("value")
     complete(persistanceMgr.deleteSetting(propName,propValue))
    

    我的方法声明

    def deleteSetting(name:String,value:String): Future[String] = Future{
     code...
    }
    

3 个答案:

答案 0 :(得分:19)

对于像http://host:port/path?key=authType&value=Basic345这样的请求,请尝试

path("path") {
  get {
    parameters('key.as[String], 'value.as[String]) { (key, value) =>
      complete {
        someFunction(key,value)
      }
    }
  }
}

答案 1 :(得分:0)

即使在代码中不太明确,您也可以一次从上下文中提取所有查询参数。您可以按如下方式使用:

// Previous part of the Akka HTTP routes ...
extract(_.request.uri.query()) { params  =>
  complete {
    someFunction(key,value)
  }
}

答案 2 :(得分:0)

如果您希望将query parameters提取为一张

extract(ctx => ctx.request.uri.queryString(charset = Charset.defaultCharset)) { queryParams =>
   //useyourMethod()
}