akka-http:如何提取查询参数列表
akka-http: How to extract list of query paramerters
在 akka-http 中,我们如何从传入请求中提取不同长度的查询参数列表?
请求url可以这样:
.../employees?city=london,ny,paris
每个请求的城市数量可能会有所不同。
得到它作为:
path("searchByCity") {
get {
parameters(Symbol("city").*) {cities =>
.....
}
}
}
URL 现在是:
.../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')
根据您的解决方案,您可以将 Symbol
部分替换为
parameters("city".repeated)
如果您想将您的值保留为逗号分隔的值列表,您可以创建一个自定义指令,例如
def paramAsList(key: String): Directive1[List[String]] =
parameter(key)
.map(x => x.split(",").toList)
...
get {
paramAsList("city") => cities {
....
有了这个,你的 url .../employees?city=london,ny,paris
应该可以工作了
在 akka-http 中,我们如何从传入请求中提取不同长度的查询参数列表?
请求url可以这样:
.../employees?city=london,ny,paris
每个请求的城市数量可能会有所不同。
得到它作为:
path("searchByCity") {
get {
parameters(Symbol("city").*) {cities =>
.....
}
}
}
URL 现在是:
.../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')
根据您的解决方案,您可以将 Symbol
部分替换为
parameters("city".repeated)
如果您想将您的值保留为逗号分隔的值列表,您可以创建一个自定义指令,例如
def paramAsList(key: String): Directive1[List[String]] =
parameter(key)
.map(x => x.split(",").toList)
...
get {
paramAsList("city") => cities {
....
有了这个,你的 url .../employees?city=london,ny,paris
应该可以工作了