Scala 如何在akka http中读取查询参数?
我知道akka http库在处理请求时对类类型进行封送和解封送。但现在,我需要读取Scala 如何在akka http中读取查询参数?,scala,akka-stream,akka-http,Scala,Akka Stream,Akka Http,我知道akka http库在处理请求时对类类型进行封送和解封送。但现在,我需要读取GETrequest的请求参数。我尝试了parameter()方法,它正在返回ParamDefAux类型,但我需要这些值作为字符串类型 我检查以下问题的答案 但我不能做我需要的 请告诉我如何从请求中提取查询参数。或者如何从ParamDefAux 请求URL http://host:port/path?key=authType&value=Basic345 获取方法定义 val propName =
GET
request的请求参数。我尝试了parameter()
方法,它正在返回ParamDefAux
类型,但我需要这些值作为字符串类型
我检查以下问题的答案
但我不能做我需要的
请告诉我如何从请求中提取查询参数。或者如何从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)
}
}
如果希望将
查询参数作为一个整体提取
extract(ctx => ctx.request.uri.queryString(charset = Charset.defaultCharset)) { queryParams =>
//useyourMethod()
}
应该有用的,你试过了吗?path(“query”){parameters('name.as[String]){name=>complete(name)}}~要使其起作用,import akka.http.scaladsl.server.Directives.\u
需要在那里。将键值对作为两个单独的查询参数分开是正常的做法吗(如示例所示)?另一种选择是,不使用名为“key”的查询参数,我们只将其称为authType,并将其值设为Basic345