Scala // Squeryl / Play从同一个参数中检索多个值

时间:2016-04-28 20:52:53

标签: scala playframework squeryl

我有以下网址:http://localhost/api/books/?bookId=21&bookId=62?authorId=2

但我如何使用Scala检索所有bookId值?

我使用PlayFrameWork作为WebServer,所以这是我的代码:

val params = request.queryString.map { case (k, v) => k -> v(0) }

System.out.print(params.get("bookId"));

params.get(" bookId")只获取bookId参数中的最后一个值。 e-g: 62

如何检索我所有的bookId参数?一旦我知道如何,我将能够将它们转换为整数。

谢谢,

1 个答案:

答案 0 :(得分:1)

如果您愿意更新routes文件,请播放!可以为您提取并将重复的密钥转换为数组:

GET    /api/books    controllers.Books.show(bookId: List[Int], authorId: Id)

将为您提供要在通话定义bookId: List[Int]

中使用的参数def show(bookId: List[Int], authorId: Int)

** 更新 **

从Play规范中,它应该:

  

“支持参数的几个查询字符串值”

request.queryString返回Map[String, Seq[String]]

问题是你正在将其转换为Map[String, String]

val params = request.queryString.map { case (k, v) => k -> v(0) }

v(0)首次出现每个参数

直接使用queryString Map:对于请求/api/books/?bookId=21&bookId=62?authorId=2 request.queryString.get("bookId"),将返回您可以迭代的所有bookId值的Option[Seq[String]]

request.queryString.get("bookId").map { bookIds: Seq[String] => *do something with book ids here * }