【发布时间】:2021-10-11 18:24:29
【问题描述】:
在akka-http中,我们如何从传入的请求中提取不同长度的查询参数列表?
请求的url可以是这样的:
.../employees?city=london,ny,paris
城市数量可能因每个请求而异。
【问题讨论】:
标签: akka-http
在akka-http中,我们如何从传入的请求中提取不同长度的查询参数列表?
请求的url可以是这样的:
.../employees?city=london,ny,paris
城市数量可能因每个请求而异。
【问题讨论】:
标签: akka-http
从您的解决方案中,您可以替换 Symbol 部分,如
parameters("city".repeated)
如果您想将值保留为以逗号分隔的值列表,您可以创建一个自定义指令,如
def paramAsList(key: String): Directive1[List[String]] =
parameter(key)
.map(x => x.split(",").toList)
...
get {
paramAsList("city") => cities {
....
有了这个,你的网址.../employees?city=london,ny,paris 应该可以工作了
【讨论】:
它的工作原理是:
path("searchByCity") {
get {
parameters(Symbol("city").*) {cities =>
.....
}
}
}
网址现在为:
.../employees?city=london&city=ny&city=paris
【讨论】:
function getQueryParams(url){
let urlParts = url.split('?');
if(urlsParts?.length > 1){
let params = urlParts[1].split('&');
return params
}
return null
}
var queryParams = getQueryParams('.../employees?city=london,ny,paris')
【讨论】: