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

How to read query parameters in akka-http?

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

我检查以下问题的答案。

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

但不能做我需要的。

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

中提取所需的值

请求URL

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...
}

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

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

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

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

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

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