如何在 scalatra 中传递多参数



如果我想在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")
}

最新更新