我有以下网址: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参数?一旦我知道如何,我将能够将它们转换为整数。
谢谢,
答案 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 * }