如果我想在scalatra中读取get请求中的单个参数,我可以执行以下操作:
get("mypath/:id") {
val id = params("id")
...
}
根据 scalatra 文档,我还可以使用 multiParams
来获取一系列参数:
val ids = multiParams("ids")
但它并没有说明如果我希望传递多个参数,应该如何形成 URL。因此,如果我想传递多个 ID,URL 的格式是什么?
我尝试过使用与号、逗号和分号,但无济于事:例如
../mypath/id1&id2
查看文档:http://scalatra.org/guides/2.4/http/routes.html
例如,让我们像这样使用 GET 点击一个 URL:
/articles/52?foo=uno&bar=dos&baz=three&foo=anotherfoo
仔细看:里面有两个"foo"键。
假设在
/articles/:id
有一个匹配的路由,我们得到 操作中的以下结果:get("/articles/:id") { params("id") // => "52" params("foo") // => "uno" (discarding the second "foo" parameter value) params("unknown") // => generates a NoSuchElementException params.get("unknown") // => None - this is what Scala does with unknown keys in a Map multiParams("id") // => Seq("52") multiParams("foo") // => Seq("uno", "anotherfoo") multiParams("unknown") // => an empty Seq }
因此,您需要命名每个参数,例如 /mypath/?ids=id1&ids=id2&ids=id3
您可以在路径中嵌入多个同名参数并通过multiParams
获取它们:
// http://localhost:8080/articles/id1/id2
get("/articles/:id/:id"){
println(multiParams("id")) // => Seq("id1", "id2")
}